共計 1182 個字符,預(yù)計需要花費 3 分鐘才能閱讀完成。
cloud-init 的工作原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
cloud-init 是 linux 的一個工具,當(dāng)系統(tǒng)啟動時,cloud-init 可從 nova metadata 服務(wù)或者 config drive 中獲取 metadata,完成包括但不限于下面的定制化工作:
設(shè)置 default locale
設(shè)置 hostname
添加 ssh keys 到 .ssh/authorized_keys
設(shè)置用戶密碼
配置網(wǎng)絡(luò)
安裝軟件包
為了實現(xiàn) instance 定制工作,cloud-init 會按 4 個階段執(zhí)行任務(wù):
local
init
config
final
cloud-init 安裝時會將這 4 個階段執(zhí)行的任務(wù)以服務(wù)的形式注冊到系統(tǒng)中,比如在 systemd 的環(huán)境下,我們能夠看到這 4 個階段分別對應(yīng)的服務(wù):
local – cloud-init-local.service
init – cloud-init.service
config – cloud-config.service
final – cloud-final.service
local 階段
作為 cloud-init 執(zhí)行的第一個階段,此時 instance 還不知道該如何配置網(wǎng)卡,cloud-init 的任務(wù)就是從 config drive 中獲取配置信息,然后寫入 /etc/network/interfaces 文件(如果是 centos 則寫入 /etc/sysconfig/network-scripts/ifcfg-xxx)。
如果沒有 config drive,則將所有網(wǎng)卡配置成 dhcp 模式。這是非常關(guān)鍵的一步,只有當(dāng)網(wǎng)卡正確配置后,才能獲取到 metadata。
關(guān)于 local 階段下一節(jié)會通過實驗詳細分析。
init, config 和 final 階段
正常情況下,在這三個階段執(zhí)行之前 instance 網(wǎng)絡(luò)已經(jīng)配置好了,并且已經(jīng)成功獲取到 metadata。cloud-init 的配置文件 /etc/cloud/cloud.cfg 定義了三個階段分別要執(zhí)行的任務(wù),任務(wù)以 module 形式指定。instance 真正的定制工作就是由這些 module 完成的。module 決定做哪些定制化工作,而 metadata 則決定最終定制化的結(jié)果。
舉個例子,如果 cloud.cfg 中指定了 set_hostname 這個 module,則意味著 cloud-int 會設(shè)置 instance 的主機名,而具體設(shè)置成哪個主機名則由 metadata 中 hostname 參數(shù)決定。
有些 module 是有默認行為的,比如 growpart,如果 metadata 中沒有特別指定,它會自動擴展 / 分區(qū)。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。