

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

# 在 KVM 和 VMware 上適用於 Amazon Linux 2023 的 NoCloud (`seed.iso`) `cloud-init` 組態
<a name="seed-iso"></a>

 本節說明如何建立和使用`seed.iso`映像來設定在 KVM或 上執行的 Amazon Linux 2023VMware。由於 KVM和 VMware環境沒有 [Amazon EC2 執行個體中繼資料服務 (IMDS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service)，因此需要另一種方法來設定 Amazon Linux 2023，而提供`seed.iso`映像是這些方法之一。

 `seed.iso` 開機映像包括虛擬機器開機和設定所需的初始組態資訊，例如網路組態、主機名稱和使用者資料。

**注意**  
 `seed.iso` 開機映像僅包括 VM 開機所需的組態資訊。不包括 Amazon Linux 2023 作業系統檔案。

 若要產生 `seed.iso` 映像，您至少需要兩個組態檔案，有時需要三個：

** `meta-data` **  
 此檔案通常會包含虛擬機器的主機名稱。

** `user-data` **  
 此檔案通常會設定使用者帳戶，並指定其密碼、ssh 金鑰對和/或存取機制。預設情況下，Amazon Linux 2023 KVM 映像會建立 `ec2-user` 使用者帳戶。您可以使用 `user-data` 組態檔案來設定此預設使用者帳戶的密碼和/或 SSH 金鑰。

** `network-config` (選用) **  
 此檔案通常會為虛擬機器提供網路組態，該設定將覆寫預設的組態。預設組態是在第一個可用的網路介面上使用 DHCP。

**建立 `seed.iso` 磁碟映像**

1. 在 Linux 或 macOS 電腦上，建立名為 `seedconfig` 的新資料夾並導覽到該資料夾。
**注意**  
 Windows 或其他作業系統也可以用來完成這些步驟，但您必須找到與 `mkisofs` 等效的工具，才能完成建立 `seed.iso` 映像。

1. 建立 `meta-data` 組態檔案。

   1. 建立名為 `meta-data` 的新檔案。

   1.  使用您偏好的編輯器開啟 `meta-data` 檔案、新增下列命令，然後將 *vm-hostname* 替換成虛擬機器的主機名稱：

      ```
      #cloud-config
      local-hostname: vm-hostname
      ```

   1. 儲存並關閉 `meta-data` 組態檔案。

1. 建立 `user-data` 組態檔案。

   1. 建立名為 `user-data` 的新檔案。

   1.  使用您偏好的編輯器開啟 `user-data` 檔案，然後新增下列項目，以及視需要進行取代：

      ```
      #cloud-config
      #vim:syntax=yaml
      users:
      # A user by the name 'ec2-user' is created in the image by default.
        - default
        - name: ec2-user
      ssh_authorized_keys:
        - ssh-rsa ssh-key
      # In the above line, replace ssh key with the content of your ssh public key.
      ```

   1.  您可以選擇將更多使用者帳戶新增至`user-data`組態檔案。

       您也可以指定其他使用者帳戶、其存取機制、密碼和金鑰對。如需支援指令的詳細資訊，請參閱[上游 `cloud-init` 文件](https://cloudinit.readthedocs.io/en/22.2/topics/format.html)。

   1. 儲存並關閉 `user-data` 組態檔案。

1. (選擇性) 建立 `network-config` 組態檔

   1. 建立名為 `network-config` 的新檔案。

   1.  使用您偏好的編輯器開啟 `network-config` 檔案、新增下列命令，然後將各種 IP 地址替換成適合您設定的 IP 地址。

      ```
      #cloud-config
      version: 2
      ethernets:
        enp1s0:
          addresses:
            - 192.168.122.161/24
          gateway4: 192.168.122.1
          nameservers:
            addresses: 192.168.122.1
      ```
**注意**  
 `cloud-init` 網路組態提供與介面 MAC 位址相符的機制，而不是指定可根據 VM 組態變更的介面名稱。如需此 (及其他) `cloud-init` 網路設定功能的詳細資訊，請參閱[上游 `cloud-init` Network Config Version 2 說明文件](https://cloudinit.readthedocs.io/en/22.2/topics/network-config-format-v2.html)。

   1. 儲存並關閉 `network-config` 組態檔案。

1.  使用在先前步驟中建立的 `meta-data`、`user-data` 和選用的 `network-config` 組態檔，以建立 `seed.iso` 磁碟映像。

    根據您建立 `seed.iso` 磁碟映像的作業系統，執行下列其中一個動作。
   +  在 Linux 系統上，使用 **mkisofs** 或 **genisoimage** 等的工具來建立完成的 `seed.iso` 檔案。導覽至 `seedconfig` 資料夾並執行下列命令：

     ```
     $ mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data
     ```
   +  如果您使用 `network-config`，請將其包含在 **mkisofs** 的調用中：

     ```
     $ mkisofs -output seed.iso -volid cidata -joliet -rock user-data meta-data network-config
     ```
   +  在 macOS 系統上，您可以使用 **hdiutil** 等的工具來產生完成的 `seed.iso` 檔案。由於 **hdiutil** 採用路徑名稱而非檔案清單，因此無論是否建立 `network-config` 組態檔案，都可以使用相同的調用。

     ```
     $ hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata seedconfig/
     ```

1.  產生的`seed.iso`檔案現在可以使用虛擬 CD-ROM 磁碟機連接至新的 Amazon Linux 2023 虛擬機器`cloud-init`，讓 在第一次開機時尋找 並將組態套用至系統。