實(shí)現(xiàn) instance 定制化,cloud-init(或 cloudbase-init)只是故事的一半,metadata service 則是故事的的另一半。兩者的分工是:metadata service 為 cloud-init 提供自定義配置數(shù)據(jù),cloud-init 完成配置工作。


Metadata Service


前面討論了一些 cloud-init 和 cloudbase-init 相關(guān)的經(jīng)驗(yàn),收到了很多反饋,大家對(duì) instance 啟動(dòng)時(shí)是如何完成自定義配置這個(gè)過程非常感興趣,希望能夠系統(tǒng)講一下。這個(gè)主題確實(shí)很重要,實(shí)際應(yīng)用場景很多,確實(shí)很有必要系統(tǒng)討論一番,作為對(duì)現(xiàn)有教程的補(bǔ)充。

instance 是通過 image 部署出來的,image 中包含了操作系統(tǒng)(例如 Ubuntu 16.04),最常用的軟件(例如 SSH)以及最通用的配置(例如 eth0 dhcp)。然而在創(chuàng)建 instance 的時(shí)候,我們往往希望對(duì) instance 進(jìn)行一些額外的配置,比如:安裝某些包、開啟一些服務(wù)、添加 SSH 秘鑰、配置 hostname 等等。

有幾個(gè)方法可以完成這項(xiàng)工作:

1. 將這些東西統(tǒng)統(tǒng)做到 image 中。

這種方案可以實(shí)現(xiàn),但不現(xiàn)實(shí)。image 應(yīng)該被看著是一個(gè)模板,存放的是通用的內(nèi)容。在 image 中加入個(gè)性化配置的做法要么使 image 變得非常龐雜,要么導(dǎo)致數(shù)量眾多的 image,不易管理。

2. instance 部署出來之后手工完成個(gè)性化配置。

由于需要手工操作,instance 數(shù)量多了之后工作量會(huì)激增,而且容易出錯(cuò)。

3. 推薦方案:由 OpenStack Metadata Service 提供 instance 的配置信息(這些信息被統(tǒng)稱為 metadata)。instance 啟動(dòng)時(shí)向 Metadata Service 請(qǐng)求并獲得自己的 metadata,instance 的 cloud-init(或 cloudbase-init)根據(jù) metadata 完成個(gè)性化配置工作。

這個(gè)方案的優(yōu)點(diǎn)是不需要修改基礎(chǔ) image,保證了 image 的穩(wěn)定性,同時(shí)實(shí)現(xiàn)了 instance 自動(dòng)化地個(gè)性配置。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式