有自定义安装脚本的示例吗?

有自定义安装脚本的示例吗?

我似乎找不到有关如何提供安装后运行的自定义脚本的任何信息。社区可以提供这方面的示例吗?

答案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>

相关内容