第 1 章 cloud-init 简介

cloud-init 是一个软件包,可在系统引导期间自动初始化云实例。您可以配置 cloud-init 来执行各种任务。可以通过 cloud-init 执行的一些任务示例包括:

  • 配置主机名
  • 在实例上安装软件包
  • 运行脚本
  • 限制默认虚拟机的行为

您可以从不同的地方获得配置 cloud-init 的镜像,具体取决于您计划如何使用它。

  • cloud-init 软件包已安装在您从红帽客户门户下载的 KVM 客户机镜像上。当您启动实例时,cloud -init 会被启用。从红帽客户门户网站下载的 KVM 客户机镜像用于 Red Hat Virtualization (RHV)、Red Hat OpenStack Platform (RHOSP)和 Red Hat OpenShift Virtualization。
  • 您还可以从红帽客户门户网站下载 RHEL ISO 镜像,以创建自己的自定义客户机镜像。在这种情况下,您需要自己在客户机镜像上安装 cloud-init 软件包。
  • 如果您计划将镜像与云供应商(如 AWS 或 Azure)搭配使用,请使用 Red Hat Image Builder 创建镜像。镜像构建器(Image Builder)镜像是针对于不同云供应商进行定制的镜像。镜像类型 AMI、VHD 和 qcow2 都已安装了 cloud-init。如需有关镜像构建器的信息,请参阅自定义 RHEL 系统镜像

大部分云平台都支持 cloud-init,但配置过程和支持的选项有所不同。另外,您也可以为非云环境配置 cloud-init

您可以在一个虚拟机上配置 cloud-init,然后使用该虚拟机作为其他虚拟机或虚拟机集群的模板。

特定的红帽产品(如 Red Hat Virtualization)会提供有关有在其产品中配置 cloud-init 的信息。

本文档在多个位置上将这些信息称为 cloud-init 文档。有关 cloud-init 的完整信息,请参阅相关的 cloud-init 文档。

先决条件

1.1. cloud-init 配置

cloud-init 使用 YAML 格式的文件指令执行任务。您可以通过在 YAML 文件中提供说明来确定您希望 cloud-init 执行的初始配置。当实例启动时,cloud-init 服务将启动并执行指令。根据 cloud-init 配置,在第一次引导或后续启动虚拟机时完成任务。

您可以通过配置 /etc/cloud/cloud.cfg 文件并在 /etc/cloud/cloud.cfg.d/ 目录下添加指令来定义任务。

  • cloud.cfg 文件包含指令,如用于用户访问和验证以及系统信息的指令。

    文件还包括 cloud-init 的默认和可选模块。模块在三个阶段内按顺序执行,这些阶段包括 cloud-init 初始化阶段、配置阶段和最终阶段。在 cloud.cfg 文件中,这三个阶段的模块分别列在 cloud_init_modulescloud_config_modulescloud_final_modules 下。

  • cloud.cfg.d 目录,您可以在其中为 cloud-init 添加附加指令。当您向 cloud.cfg.d 目录添加指令时,通常会将它们添加到名为 *.cfg 的文件中,您需要在每个文顶部包含 #cloud-config