我有一个完全配置的实例和一个用于自动缩放组的映像。当从此映像自动缩放新实例时,它会调用 cloud-init。cloud-init 会更改主机名并破坏 fstab。
我想防止 cloud-init 在实例启动时启动。
答案1
在使用 systemd 且具有当前版本 (17.0+) cloud-init 的系统中,上游文档描述了使用以下任一方法禁用 cloud-init 的过程:
touch /etc/cloud/cloud-init.disabled
- 添加
cloud-init=disabled
到内核命令行。
对于旧版本的 cloud-init (0.7.X),以下信息可能会有用。
您可以通过以下两种方式之一禁用 cloud-init 对 /etc/fstab 的修改。
a.) 通过提供云配置来覆盖默认的“挂载”条目并禁用它们。
mounts:
- [ephemeral0, null]
- [swap, null]
b.) 禁用mounts
模块运行。具体方法是将其从 'cloud_config_modules' 列表中删除,您将在 中看到该列表/etc/cloud/cloud.cfg
。
关于主机名,您也可以控制它。如果您只是想阻止 cloud-init 修改 /etc/hostname,那么:
preserve_hostname: true
您可能还对以下内容感兴趣manage_etc_hosts
。
上述两项均记录在doc/示例/云配置.txt(并安装在/usr/share/doc/cloud-init/examples
)
不过,我很想知道 cloud-init 是如何破坏 /etc/fstab 的。请使用ubuntu-bug cloud-init
实例内部的命令提交错误,并描述您认为它做了什么错误的事情。
答案2
在 Ubuntu 20.04 上,以下步骤可以帮助我禁用和删除 cloud-init:
运行此命令来禁用:
sudo touch /etc/cloud/cloud-init.disabled
重启机器。
运行以下命令来删除:
sudo apt-get purge cloud-init
sudo rm -rf /etc/cloud/; sudo rm -rf /var/lib/cloud/