本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AL2 上使用 cloud-init
cloud-init 套件為 Canonical 所建立的開放原始碼應用程式,用於在 Amazon EC2 等雲端運算環境下引導 Linux 映像。Amazon Linux 包含自訂版本的 cloud-init。這可讓您指定執行個體在開機時應該發生的動作。您可在執行個體啟動時透過使用者資料欄位將所需動作傳送至 cloud-init。這表示您可在許多使用案例下用常用 AMI,並在啟動時動態設定它們。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。 -
此內容為包含檔案。檔案包含 URL 清單,每行一個。將讀取每個 URL,且其內容將通過相同的規則集合。從 URL 讀取的內容可能為 gzip 壓縮、MIME 分段或純文字。
-
-
雲端組態資料
-
開頭為
#cloud-config或Content-Type: text/cloud-config。 -
此內容是雲端組態資料。
-
-
啟動任務 (AL2 不支援)
-
開頭為
#upstart-job或Content-Type: text/upstart-job。 -
此內容存放在 的檔案中
/etc/init,而且 upstart 會像使用其他 upstart 任務一樣使用內容。
-
-
雲端 boothook
-
開頭為
#cloud-boothook或Content-Type: text/cloud-boothook。 -
此內容為 boothook 資料。其存放在
/var/lib/cloud下的檔案內,且將立即執行。 -
這是最早可用的關聯。未提供只允許其執行一次的機制。boothook 必須自我處理。其將提供含環境變數
INSTANCE_ID的執行個體 ID。請用此變數提供 boothook 資料每執行個體一次的集合。
-