Pi 上的 Ubuntu 服务器:cloud-init 每次启动时都会重新运行吗?

Pi 上的 Ubuntu 服务器:cloud-init 每次启动时都会重新运行吗?

我在 Raspberry Pi 4 上安装了官方的 Ubuntu Server 22.04 映像。我还在network-configSD 卡上的文件中配置了我的无线网络。

该文件由 cloud-init 转换/etc/netplan/50-cloud-init.yaml为插入以下前言:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}

我对这个说法持怀疑态度——如果我修改原始/boot/firmware/network-config文件,它不会导致50-cloud-init.yaml重新生成。

另一方面,cloud-init.servicecloud-config.service仍然启用并且似乎在启动时运行。

答案1

视情况而定。Cloud-init 确实会在每次启动时运行,但对于大多数启动来说,它基本上是无操作的。

首次启动时,cloud-init 从云中获取元数据、用户数据和网络配置。所有这些信息都已缓存,因此在后续启动时,它不需要或尝试从云中重新获取此信息。有些云会覆盖此行为以在每次启动时获取此数据,但对于 raspberry pi,这应该只在首次启动时发生。然后,它会运行多个模块来处理任何提供的云配置。任何模块每次启动时都会运行带有Module frequencyof 的always程序。如果运行了某个程序cloud-init clean或者云为该实例提供了新的实例 ID,cloud-init 将(大部分)重新运行程序,就像第一次启动一样。

对于您的用例,您说得对。更正确的解释应该是“更改不能保证在实例重启后仍然存在”。但是,如果您运行cloud-init clean,则应该看到该文件已重新生成。

相关内容