第 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_modules
、cloud_config_modules
和cloud_final_modules
下。-
cloud.cfg.d
目录,您可以在其中为cloud-init
添加附加指令。当您向cloud.cfg.d
目录添加指令时,通常会将它们添加到名为*.cfg
的文件中,您需要在每个文顶部包含#cloud-config
。