定制 cloud-init - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

定制 cloud-init

cloud-init 软件包是一个开源应用程序,可在云计算环境中引导 Linux 映像。有关更多信息,请参阅 cloud-init 文档

AL2023 包含自定义版本的 cloud-init。使用 cloud-init,您可以指定在引导时您的实例会发生什么情况。

启动实例时,您可以使用用户数据字段将操作传递给。cloud-init这意味着,您可以在许多使用案例中使用通用的 Amazon 机器映像 (AMI),并在启动实例时动态配置它们。AL2023 还使用 cloud-init 来配置 ec2-user 账户。

AL2023 使用 /etc/cloud/cloud.cfg.d/etc/cloud/cloud.cfg 中的 cloud-init 操作。您可以在 /etc/cloud/cloud.cfg.d 目录中创建自己的 cloud-init 操作文件。Cloud-init 按字典顺序读取此目录中的所有文件。时间较晚的文件覆盖时间较早的文件中的值。当 cloud-init 启动一个实例时,cloud-init 软件包会执行以下配置任务:

  • 设置默认区域

  • 设置主机名

  • 解析和处理用户数据

  • 生成主机私有 SSH 密钥

  • 将用户的公有 SSH 密钥添加到 .ssh/authorized_keys 以便于登录和管理

  • 准备存储库以进行软件包管理

  • 处理用户数据中定义的软件包操作

  • 运行用户数据中的用户脚本

  • 装载实例存储卷(如果适用)

    • 默认情况下,如果 ephemeral0 实例存储卷存在且包含一个有效文件系统,则说明实例存储卷已装载在 /media/ephemeral0。否则,说明未装载。

    • 默认情况下,对于 m1.smallc1.medium 实例类型,将装载与实例关联的所有交换卷。

    • 您可以使用以下 cloud-init 指令覆盖默认实例存储卷装载:

      #cloud-config mounts: - [ ephemeral0 ]

      有关如何加强对装载的控制,请参阅 cloud-init 文档中的装载

    • 当一个实例启动时,支持 TRIM 的实例存储卷不会被格式化。要装载实例存储卷,您必须对实例存储卷进行分区和格式化。

      有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的实例存储卷 TRIM 支持

    • 当您启动实例时,可以使用 disk_setup 模块对实例存储卷进行分区和格式化。

      有关更多信息,请参阅 cloud-init 文档中的磁盘设置

有关通过 SELinux 使用 cloud-init 的信息,请参阅使用 cloud-init 启用 enforcing 模式

有关 cloud-init 用户数据格式的信息,请参阅 cloud-init 文档中的用户数据格式