基礎(chǔ)設(shè)施即代碼如何起效?
時(shí)間:2022-04-05 18:21:01 | 來(lái)源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-04-05 18:21:01 來(lái)源:行業(yè)動(dòng)態(tài)
要全面實(shí)現(xiàn)基礎(chǔ)設(shè)施即代碼,我們需要準(zhǔn)備一系列依賴項(xiàng)。
首先,也是最重要的依賴項(xiàng),就是遠(yuǎn)程訪問托管。配置管理工具需要接入并修改該遠(yuǎn)程主機(jī)。如果遠(yuǎn)程基礎(chǔ)設(shè)施具備自我管理能力,我們就要確保團(tuán)隊(duì)能夠隨時(shí)訪問其配置管理工具。而IaaS云托管平臺(tái)則提供API,允許用戶根據(jù)需要自動(dòng)創(chuàng)建、刪除及修改基礎(chǔ)設(shè)施資源。配置管理工具同樣可以訪問這些API,借此將相關(guān)操作任務(wù)轉(zhuǎn)為自動(dòng)化形式。目前流行的IaaS平臺(tái)包括Digital Ocean、Amazon AWS以及微軟Azure。
實(shí)現(xiàn)IaC的下一項(xiàng)要求,則是接入IaaS API并負(fù)責(zé)自動(dòng)執(zhí)行常規(guī)任務(wù)的工具套件。團(tuán)隊(duì)當(dāng)然可以自主創(chuàng)建一組腳本及工具,但這會(huì)帶來(lái)大量的開發(fā)負(fù)擔(dān)與后續(xù)維護(hù)成本,投資回報(bào)也往往不高。目前市面上已經(jīng)有多種開源配置管理平臺(tái)用于解決這類需求,包括Terraform、Ansible、Salt Stack以及Chef等。
最后是版本控制系統(tǒng)。配置管理平臺(tái)使用以YAMl等標(biāo)記語(yǔ)言編寫的、人類及機(jī)器皆可讀取的文本文件對(duì)平臺(tái)將要執(zhí)行的任務(wù)及序列做出聲明。這類文本文件作為應(yīng)用代碼文件存在,并被存儲(chǔ)在版本控制系統(tǒng)repo當(dāng)中。這套repo相當(dāng)于集中指定來(lái)源,同時(shí)支持pull請(qǐng)求及代碼審查。目前最流行的版本控制系統(tǒng)當(dāng)數(shù)Git。
有了以上依賴項(xiàng),我們?cè)O(shè)想以下示例場(chǎng)景,其中開發(fā)人員希望向系統(tǒng)當(dāng)中添加新的應(yīng)用程序服務(wù)。下面來(lái)看IaC工作流演示:
1. 開發(fā)人員在選定的配置管理平臺(tái)Terraform中編輯YAML配置文本文件,由此指定所需的新托管服務(wù)器。
2. 開發(fā)人員將編輯結(jié)果提交至Git repo中的功能分支。由于項(xiàng)目的Git repo托管在Bitbucket上,因此開發(fā)者會(huì)開啟一項(xiàng)pull請(qǐng)求。其他團(tuán)隊(duì)成員負(fù)責(zé)審查這項(xiàng)pull請(qǐng)求,并發(fā)現(xiàn)其中包含基礎(chǔ)設(shè)施變更。后者批準(zhǔn)此項(xiàng)pull請(qǐng)求,而后由之前的開發(fā)人員將提交結(jié)合提交并合并至repo的主分支當(dāng)中。
3. 到這里,我們需要使用配置平臺(tái)以執(zhí)行更新。這項(xiàng)更新可以由開發(fā)人員手動(dòng)觸發(fā)。本場(chǎng)景中的團(tuán)隊(duì)使用的是Bitbucket,因此可以訪問Bitbucket Pipelines以使用管道自動(dòng)執(zhí)行此步驟。
4. 執(zhí)行完成后,Terraform將與團(tuán)隊(duì)的IaaS進(jìn)行交互。Terraform將針對(duì)IaaS API執(zhí)行一系列命令,確保IaaS與預(yù)期的基礎(chǔ)設(shè)施配置保持同步。
關(guān)鍵詞:設(shè)施,基礎(chǔ)