cloud-init簡介
是為解決雲環境中,對新建虛擬機的初始化配置問題,所提供的一個解決方案,若你的非雲環境,完全可以關閉它。
它能做什么?
它可以通過元數據服務來為批量創建的虛擬機設置主機名,配置創建什么用戶,用戶的密碼,設置root是否能ssh登錄,配置啟動VM時,安裝什么軟件,以及執行什么腳本,甚至磁盤如何分區,分多大,格式化為什么文件系統,是否可自動增長等等,它都可以通過定義配置文件來實現。
它的基本工作原理:
local階段
首先cloud-init-local 服務在開機時,最先啟動,它會試圖從元數據服務哪里獲取IP的配置信息,若沒有找到IP信息,就設置為dhcp自動獲取IP,需要注意: 元數據服務有很多種,似乎每個廠家的規則還不太相同,這個不是很確定,具體有哪些元數據服務可用,可查看 dpkg-reconfigure cloud-init 這是Ubuntu或Debian系統中的查看方法,其它還需自行查詢。在ubuntu上,默認啟用了所有元數據服務,若你是VMware安裝的Ubuntu虛擬機,那默認將使用本地的元數據服務,即/var/lib/cloud/seed/ 下面的本地磁盤文件來存儲安裝系統時,根據你的設置,自動生成的元數據配置文件信息。
init, config, 和 final階段:
接着根據/etc/cloud/cloud.cfg 定義的,此三個階段分別要執行的任務,其中每個任務都是以模塊(module)形式設置的。
虛擬機啟動時 ,所有定制化項目都可在這三個階段設置,但每個配置項,具體要做什么,就是由metadata(元數據)來決定了。
如: cloud.cfg 中指定了 set_hostname 這個 module,則意味着 cloud-int 會設置 instance(虛擬機) 的主機名,而具體設置成哪個主機名則由 metadata 中 hostname 參數決定。
非雲環境的Ubuntu主機如何關閉Cloud-init:
systemctl disable cloud-init-local cloud-init cloud-config cloud-final
systemctl stop cloud-init-local cloud-init cloud-config cloud-final