ECS實例創建過程中,默認通過初始化工具自動執行一些預定義的配置任務,例如網絡配置、主機名設置以及自定義腳本的執行等。不同類型的操作系統使用的初始化工具會有所不同,對于Linux實例,由cloud-init工具負責完成自動初始化,而Windows實例則由Vminit工具進行自動初始化。本文將介紹Linux實例和Windows實例的初始化工具。
cloud-init工具介紹
Linux實例通過開源工具cloud-init來完成自動初始化實例。更多信息,請參見cloud-init官方文檔。
在cloud-init中,定義了一系列的模塊(Modules)來完成需要執行的任務和配置。每個模塊都有名稱、運行頻率、配置參數這三大要素,其中運行頻率表示該模塊該在什么時候運行,通常有兩種運行頻率:
once-per-instance
表示僅在實例首次啟動時運行;always
表示實例每次啟動時都會運行。更多信息,請參見Module reference。cloud-init通過配置文件
/etc/cloud/cloud.cfg
控制實例的初始化行為,例如運行哪些模塊。在運行模塊時,cloud-init可以從元數據服務中獲取實例的實例ID、主機名等元數據信息。以Set Hostname模塊為例,實例啟動時,cloud-init會讀取元數據的主機名信息,并將其設置為實例的主機名。
阿里云所有公共鏡像以及基于公共鏡像創建的自定義鏡像已默認安裝cloud-init,通過公共鏡像創建ECS實例會自動運行cloud-init,無需再手動安裝。如果您是通過本地制作的自定義鏡像創建ECS實例,且鏡像未安裝cloud-init,需要手動安裝cloud-init,具體操作,請參見安裝cloud-init。
Vminit工具介紹
Windows實例通過Vminit初始化工具完成自動初始化,該工具本質上是通過順序執行一系列插件來完成系統的初始化配置。其中,部分插件僅在實例首次創建并啟動時執行一次,而某些插件則在每次實例啟動時均會執行。在使用Windows鏡像創建實例的過程中,將默認自動執行Vminit所有插件的初始化功能。
2023年09月份及之后的Windows公共鏡像以及基于公共鏡像創建的自定義鏡像已默認安裝Vminit,通過公共鏡像創建ECS實例會自動運行Vminit,無需再手動安裝。如果您是通過本地制作的自定義鏡像創建ECS實例,且鏡像未安裝Vminit,需要手動安裝Vminit,保證運行該鏡像的ECS實例能成功完成初始化配置。具體操作,請參見安裝Vminit。
目前,Vminit包含10個插件,具體說明見下表。
下述插件列表適用于2023年09月份及其之后發布的Windows公共鏡像,以及基于該公共鏡像創建的自定義鏡像所運行的實例。如果鏡像不符合上述條件,則該鏡像中的Vminit插件可能與以下列表存在差異。
插件列表
插件名稱 | 執行頻率 | 插件功能 | 說明 |
Plugin_Main_StartDepend | 僅在實例首次啟動時執行。 | 啟動Windows操作系統的IP Helper服務、DHCP客戶端和Windows時間服務(W32Time) 。 | Windows鏡像默認開啟這些系統服務,但是您可能在自定義鏡像中禁用了這些服務,該插件會開啟這些服務,避免因禁用系統服務導致網絡和NTP設置異常。 |
Plugin_Main_OpenRDP | 允許通過遠程桌面連接服務RDP連接實例。 | Windows系統默認開啟RDP服務,對于禁用RDP服務的鏡像,該插件會開啟RDP。 | |
Plugin_Main_NetworkClean | 初始化網絡配置,系統會使用DHCP方式自動獲取實例中所有網卡的IP地址和DNS服務器設置。 | 如果實例中的IP Helper和DHCP服務未正確開啟,可能導致該插件執行失敗,從而無法通過內網訪問實例元數據。 | |
Plugin_Main_ConfigDisk | 將隨實例創建的數據盤進行初始化,包括創建分區、分配盤符等,且分區格式默認為GPT。 |
| |
Plugin_Main_ExtendVolume | 自動檢測Windows系統盤的空閑空間,并利用 | 無。 | |
Plugin_Main_CloudinitUserData | 該插件會從阿里云的元數據中獲取您配置的自定義數據,并使用系統的system賬戶執行自定義數據腳本。 |
| |
Plugin_Main_ConfigHostname | 實例每次啟動時都會執行。 | 設置實例的主機名。在實例創建階段,阿里云會為每個實例分配一個主機名。如果您在創建實例時指定了主機名,系統將根據您設定的主機名進行配置。否則,阿里云將自動分配一個隨機的主機名。 |
|
Plugin_Main_ConfigWsus | 該插件會從阿里云的元數據中獲取WSUS地址,并配置到實例中。如果實例的WSUS地址已經配置成阿里云的WSUS地址,則不會重復配置。 | 該插件依賴內網訪問能力。 | |
Plugin_Main_ConfigKms | 該插件會從阿里云的元數據中獲取KMS地址,配置到實例后會進行KMS激活。如果實例KMS已經激活且KMS相同,則不會重復配置。 | 該插件依賴內網訪問能力。 | |
Plugin_Main_ConfigNtp | 配置NTP時鐘源,用于時間同步。該插件會從阿里云的元數據中獲取NTP服務器地址,并配置到實例中。如果實例已經配置了相同的NTP地址,則不會重復配置。 |
|
版本發布記錄
Vminit會不定期發布版本更新,以下為Vminit的版本發布信息。
Vminit版本 | 發布內容 | 發布日期 |
2.0.1.2 |
| 2024年01月 |
2.0.1.0 | 首次發布,支持插件化可配置。 | 2023年09月 |
相關文檔
您可以在創建實例時選擇使用自定義數據來初始化該實例。具體操作,請參見自定義實例初始化配置。
關于制作鏡像時如何安裝及使用初始化工具,請參見安裝cloud-init,安裝Vminit。