本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 on 上使用云初始化 AL2
cloud-init 包是由 Canonical 构建的开源应用程序,用于在云计算环境(例如亚马逊)中引导 Linux 映像。 EC2Amazon Linux 包含 cloud-init 的自定义版本。这允许您指定实例在启动时应执行的操作。启动实例时,您可以通过用户数据字段将需要的操作传递到 cloud-init。这意味着您可以在许多 AMIs 用例中使用 common,并在启动时对其进行动态配置。Amazon Linux 还使用 cloud-init 来执行 ec2-user 账户的初始配置。
有关更多信息,请参阅 cloud-init 文档
Amazon Linux 使用在 /etc/cloud/cloud.cfg.d 和 /etc/cloud/cloud.cfg 中发现的 cloud-init 操作。您可以在 /etc/cloud/cloud.cfg.d 中创建自己的 cloud-init 操作文件。此目录中的所有文件均由 cloud-init 读取。它们是按词典顺序进行读取的,并且文件随后将覆盖之前文件中的值。
cloud-init 程序包将在启动时对实例执行这些 (以及其他) 常见配置任务:
-
设置默认区域设置。
-
设置主机名。
-
解析并处理用户数据。
-
生成主机私有 SSH 密钥。
-
将用户的公有 SSH 密钥添加到
.ssh/authorized_keys,以便于登录和管理。 -
准备存储库以进行程序包管理。
-
处理用户数据中定义的软件包操作。
-
运行在用户数据中找到的用户脚本。
-
装载实例存储卷 (如果适用)。
-
默认情况下,
ephemeral0实例存储卷装载在/media/ephemeral0(如果它存在且包含有效的文件系统;否则将不会安装)。 -
默认情况下,将装载与实例关联的所有交换卷 (仅适用于
m1.small和c1.medium实例类型)。 -
您可以使用以下 cloud-init 指令覆盖默认实例存储卷安装:
#cloud-config mounts: - [ ephemeral0 ]有关对安装的更多控制,请参阅 cloud-init 文档中的安装
。 -
在实例启动时,不会格式化支持 TRIM 的实例存储卷,因此,您必须先对这些卷进行分区和格式化,然后才能装载它们。有关更多信息,请参阅实例存储卷TRIM支持。您可以在启动时使用
disk_setup模块对您的实例存储卷进行分区和格式化。有关更多信息,请参阅 cloud-init 文档中的磁盘设置。
-
支持的用户数据格式
cloud-init 软件包支持多种格式的用户数据处理:
-
Gzip
-
如果用户数据采用 gzip 压缩,则 cloud-init 会解压缩数据并对其进行适当的处理。
-
-
MIME 多部分内容型
-
使用 MIME 多部分内容型文件,您可以指定多种数据类型。例如,您可以同时指定用户数据脚本和云配置类型。如果多部分内容型文件的格式是受支持的格式,则 cloud-init 可以处理它的各部分内容。
-
-
Base64 解码
-
如果用户数据采用 base64 编码,则 cloud-init 将决定它能否将解码后的数据理解为支持的类型之一。如果它能理解解码后的数据,则会解码数据,并进行适当处理。如果不能,它将完整地返回 base64 数据。
-
-
用户数据脚本
-
开头为
#!或Content-Type: text/x-shellscript。 -
该脚本由
/etc/init.d/cloud-init-user-scripts在首轮启动过程中运行。此操作会在启动过程的后期发生 (即执行初始配置操作后)。
-
-
包含文件
-
开头为
#include或Content-Type: text/x-include-url。 -
此内容是一个包含文件。该文件包含一个列表 URLs,每行一个。每一个都 URLs 被读取,它们的内容都要经过同样的规则集。从 URL 读取的内容可以是 gzip 压缩的 MIME-multi-part,也可以是纯文本。
-
-
云配置数据
-
开头为
#cloud-config或Content-Type: text/cloud-config。 -
此内容是云配置数据。
-
-
Upstart 作业(不支持) AL2
-
开头为
#upstart-job或Content-Type: text/upstart-job。 -
这些内容存储在中的文件中
/etc/init,新贵会像处理其他暴发户一样消耗这些内容。
-
-
Cloud boothook
-
开头为
#cloud-boothook或Content-Type: text/cloud-boothook。 -
此内容为 boothook 数据。它存储在
/var/lib/cloud下的一个文件中并会立即运行。 -
这是最早可用的 hook。尚无仅供运行一次的机制。boothook 必须自行解决此问题。它的环境变量
INSTANCE_ID中包含实例 ID。使用此变量提供一 once-per-instance组 boothook 数据。
-