2.3. cloud-init 的引导阶段


cloud-init 工具在以下 5 个引导阶段完成虚拟机配置。阶段是控制模块执行顺序的引导阶段的逻辑分组。默认模块在特定阶段执行。

在系统引导过程中,cloud-init 工具在五个 阶段 运行,确定 cloud-init 是否在运行,它在哪里找到其数据源,以及其他任务。每个阶段也属于模块执行 阶段,后者控制运行哪些模块。这些阶段包括:

  1. 检测阶段 :通过使用 systemd 服务,此阶段决定是否在引导时运行 cloud-init 工具。ds-identify 工具检测在没有有效平台的情况下是否运行 cloud-init

    此阶段属于 初始化 阶段,不执行任何模块。相反,它会识别 cloud-init 配置的数据源。

  2. 本地阶段cloud-init 搜索本地数据源,并应用网络配置,包括基于 DHCP 的回退机制。

    此阶段属于 初始化 阶段,不执行任何模块。

  3. 网络阶段cloud-init 通过运行 /etc/cloud/cloud.cfg 文件中 cloud_init_modules 下列出的模块来处理用户数据。您可以在 cloud_init_modules 部分种添加、删除、启用或禁用模块。

    此阶段属于 Networking 模块执行阶段。

  4. 配置 阶段:cloud-init 运行 /etc/cloud/cloud.cfg 文件中 cloud_config_modules 部分下列出的模块。您可以在 cloud_config_modules 部分种添加、删除、启用或禁用模块。

    此阶段属于 Configuration 模块执行阶段。

  5. 最后阶段cloud-init 运行 /etc/cloud/cloud.cfg 文件的 cloud_final_modules 部分中包含的模块和配置。它可以包括特定软件包的安装,以及触发配置管理插件和用户定义的脚本。您可以在 cloud_final_modules 部分种添加、删除、启用或禁用模块。

    这个阶段等同于 Finalization 模块执行阶段。

第一次引导虚拟机时,当 cloud-init 服务启动时,所有配置的模块都在其相应的阶段中执行。在后续引导时,某个模块是否在一个阶段中执行取决于该模块的 模块频率。模块频率在 cloud-init 配置中设置,并决定模块是否在每次 cloud-init 在实例上运行时执行,或者只在第一次运行 cloud-init 时执行,即使实例 ID 发生了变化。

注意

用于唯一标识实例的实例 ID。当实例 ID 发生变化时,cloud-init 将实例视为新实例。详情请参阅 创建模块的场景定义

可能的模块频率值如下:

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

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat