服务器创建后我是否应该删除 cloud-init

服务器创建后我是否应该删除 cloud-init

据我所知,它cloud-init可以处理实例的早期初始化cloud/VM。我一直在使用它来帮助构建 KVM VM,效果非常好。

我不明白的一个方面cloud-init是,一旦完成实例的初始创建,会发生什么。

  • 它会自动禁用以便不再运行吗?
  • 它是否可以在特定情况下再次执行(例如,在更改时/etc/machine-id)?我很确定我通过运行强制它在某个时候重新运行

    sudo rm -rf  /var/lib/cloud/*
    
  • 它的设计是否使得我应该cloud-init在实例构建并投入生产后卸载,或者cloud-init即使在实例化之后仍保持安装状态(不执行任何操作)?

答案1

令人尴尬的是,我正在寻找的答案在文档中(我发誓在我问这个问题的时候它不在那里): https://cloudinit.readthedocs.io/en/latest/topics/boot.html#first-boot-determination

cloud-init 必须确定当前启动是否是新实例的首次启动,以便应用适当的配置。在实例的首次启动中,它应该运行所有“每个实例”配置,而在后续启动中,它应该仅运行“每个启动”配置。

因此,我的问题的答案是,cloud-init根据云/VM 实例是首次启动还是后续启动,其行为可能会有所不同(可能)。

此外,cloud-init它不会自行禁用(它只是运行不同的步骤),并且在完成初始化/安装阶段(首次启动)后无需将其删除。

默认情况下,cloud-init 会尝试通过检查缓存中的实例 ID 和运行时确定的实例 ID 来确定其运行在哪种情况下。如果它们不匹配,则这是实例的首次启动;否则,这是后续启动。在内部,cloud-init 将此行为称为检查。

因此,更改机器 ID ( /etc/machine-id) 很可能会导致cloud-init重新运行初始化阶段。删除缓存 ( sudo rm -rf /var/lib/cloud/*)也会导致重新运行初始化阶段。

相关内容