我似乎找不到有关如何提供安装后运行的自定义脚本的任何信息。社区可以提供这方面的示例吗?
答案1
根据您使用的安装程序,MAAS 提供了不同的机制来自定义安装。此答案假设您使用的是科廷安装程序(也称为快速路径安装程序),它已成为MAAS 1.7。
MAAS 用途云初始化作为其安装过程的一部分。有多种方法可以自定义 cloud-init 行为,最简单的方法是简单地提供一个用户数据脚本,在操作系统安装完成后,cloud-init 在首次启动期间执行。
在 MAAS 中,这可以通过向node start
CLI 命令。该命令的格式为:
maas <user> node start <node uuid> user_data=<script> distro_series=<name>
其中<script>
实际上是一个 base64 编码的字符串。举一个具体的例子,假设您想运行一个名为的脚本,addkey.sh
该脚本将一些输出打印到安装控制台,从 Launchpad 导入 SSH 密钥为用户ubuntu
,并将结果记录到日志文件:
#!/bin/sh
(
echo ======== Hi World ======================
echo ============== $(date) =================
ssh-import-id user
) | tee /my.log
您可以发出以下命令:
$ script=$(base64 addkey.sh)
$ maas myuser node start node-79b67e82-d25c-11e4-a333-00163eca91de \
user_data=$script distro_series=trusty
如果成功的话应该(过一会儿)返回以下格式的输出:
Success.
Machine-readable output follows:
{
"status": 6,
"macaddress_set": [
{
...
现在在部署后运行该脚本一个特定节点。如果您希望设置命令以便它们在任意节点通过 MAAS 安装,您可以late_commands
在/etc/maas/preseeds/curtin_userdata
文件。有关使用此机制在网络接口上设置两个 VLAN 的更复杂示例,请参阅http://astokes.org/customizing-fastpath-curtin-installations/。
请注意,科廷目前大部分都是没有证件的;然而,概述文件描述了其操作的一些细节。
请记住,不要将此机制与comissioning script
在调试阶段,并且在 MAAS 节点生命周期中位于安装之前。调试通常用于不直接影响安装的管理任务;例如:
- 固件更新
- 关键硬件组件的健全性测试
- 老化
答案2
需要注意的是,这里的命令适用于 1.0 API。在 2.0 及更高版本中,命令为:
maas <profile> machine deploy <system_id> user_data=<base64-encoded-userdata>