2.3. cloud-init 模块分阶段执行

cloud-init 运行时,它会在三个阶段中按顺序执行 cloud.cfg 中的模块:

  1. 网络阶段(cloud_init_modules)
  2. 配置阶段(cloud_config_modules)
  3. 最终阶段(cloud_final_modules)

当首次在虚拟机上运行 cloud-init 时,您配置的所有模块都会在相应的阶段中运行。在后续的 cloud-init 运行中,某个模块是否在一个阶段中运行取决于单独模块中的模块频率。有些模块在每次运行 cloud-init 时都会运行,一些模块只在 cloud-init 第一次运行时运行,即使实例 ID 发生了变化。

注意

用于唯一标识实例的实例 ID。当实例 ID 发生变化时,cloud-init 将实例视为新实例。

可能的模块频率值如下:

  • Per instance 意味着模块在实例第一次引导时运行。例如,如果您克隆一个实例或从保存的镜像创建了一个新实例,指定为 per instance 的模块会再次运行。
  • Per once 表示模块只运行一次。例如,如果您克隆实例或从保存的镜像创建新实例,指定为 “Per once” 的实例不会在这些实例上再次运行。
  • Per always 表示模块在每次引导时都运行。
注意

您可在配置模块时或使用命令行覆盖模块频率的设置。