第 2 章 cloud-init 简介
cloud-init
工具在系统引导过程中自动初始化云实例。您可以配置 cloud-init
来执行各种任务:
- 配置主机名
- 在实例上安装软件包
- 运行脚本
- 限制默认虚拟机的行为
先决条件
cloud-init
在各种 RHEL 镜像中提供。例如:
-
如果您从 红帽客户门户网站 下载了一个 KVM 客户机镜像,则该镜像预安装了
cloud-init
软件包。启动实例后,cloud-init
软件包变为启用。红帽客户门户网站上的 KVM 客户机镜像旨在用于 Red Hat Virtualization (RHV)、Red Hat OpenStack Platform (RHOSP)和 Red Hat OpenShift Virtualization。 -
您也可以从红帽客户门户网站下载 RHEL ISO 镜像,以创建一个自定义客户机镜像。在这种情况下,您需要在自定义的客户机镜像上安装
cloud-init
软件包。 如果您需要使用来自云服务提供商(如 AWS 或 Azure)的镜像,请使用 RHEL 镜像构建器 来创建镜像。镜像构建器镜像是为特定的云提供商自定义的。包括
cloud-init
的以下镜像类型已安装:- Amazon 机器镜像(AMI)
- 虚拟硬盘(VHD)
QEMU copy-on-write (qcow2)
有关 RHEL 镜像构建器的详情,请参阅 制作自定义的 RHEL 系统镜像。
大多数云平台都支持 cloud-init
,但配置过程和支持的选项有所不同。或者,您可以为 NoCloud 环境配置 cloud-init
。
另外,您可以在一个虚拟机上配置 cloud-init
,然后使用该虚拟机作为模板来创建额外的虚拟机或虚拟机集群。
特定的红帽产品(如 Red Hat Virtualization )记录了为这些产品配置 cloud-init
的流程。
2.1. cloud-init 配置的概述
cloud-init
工具使用 YAML 格式的配置文件,将用户定义的任务应用到实例。当实例启动时,cloud-init
服务将启动并执行 YAML 文件中的指令。根据配置,任务在虚拟机的第一次引导期间或后续启动时完成。
要定义特定的任务,请配置 /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
。