

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂 cloud-init
<a name="cloud-init"></a>

cloud-init 套件是一種開放原始碼應用程式，可在雲端運算環境中引導 Linux 映像。如需詳細資訊，請參閱 [cloud-init 文件](https://cloudinit.readthedocs.io/en/22.2.2/)。

AL2023 包含 cloud-init 的自訂版本。使用 cloud-init 時，您可以指定執行個體在開機時執行的操作。

啟動執行個體時，您可以使用使用者資料欄位將動作傳遞至 cloud-init。這表示您可在許多使用案例下用常用 Amazon Machine Image (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.small` 和 `c1.medium` 執行個體類型，將掛載任何與執行個體關聯的置換磁碟區。
  + 您可用下列的 cloud-init 指令覆寫預設的執行個體儲存體磁碟區掛載：

    ```
    #cloud-config 
    mounts:
    - [ ephemeral0 ]
    ```

    如需進一步掌控掛載，請參閱 cloud-init 文件中的[掛載](https://cloudinit.readthedocs.io/en/22.2.2/topics/modules.html#mounts)。
  + 執行個體啟動時，不會格式化支援 TRIM 的執行個體儲存體磁碟區。掛載執行個體儲存體磁碟區前，您必須先分割和格式化執行個體儲存體磁碟區。

    如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體存放區磁碟區 TRIM 支援](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport)。
  +  您可在啟動執行個體時，使用 `disk_setup` 模組分割及格式化執行個體儲存體磁碟區。

    如需詳細資訊，請參閱 cloud-init 文件中的[磁碟設定](https://cloudinit.readthedocs.io/en/22.2.2/topics/modules.html#disk-setup)。

如需使用 cloud-init 與 SELinux 搭配的相關資訊，請參閱 [使用 cloud-init 來啟用 `enforcing` 模式](enforcing-mode.md#cloud-init-enforcing)。

如需有關 cloud-init 使用者資料格式的資訊，請參閱 cloud-init 文件中的[使用者資料格式](https://cloudinit.readthedocs.io/en/22.2.2/topics/format.html#format)。