這篇部落格文章是來自電子書《從管理員到DevOps:在Azure中實現DevOps的真實方法》的一章。如果你想深入了解在Microsoft Azure中成功實現DevOps所需的基礎設施即代碼,一定要查看它。
如果你曾經手動在本地創建過任何雲端或虛擬基礎設施,你就知道要麼要點很多次鼠標,要麼要輸入很多字。基礎設施即代碼(Iac)解決了這個問題。
要在其中任何一個進行配置,你都需要記住要去哪個畫面或要運行哪個命令。如果你只是在嘗試學習Azure,那麼這沒問題,但是一旦這種玩耍變成了時間就是金錢的業務關鍵的生產過程,就必須做出改變。
一旦你的組織開始對基礎設施進行嚴肅的規劃和管理,你將面臨許多新的挑戰。
你將遇到不必要的工作重複、手指打錯的情況重複發生、變更管理問題、配置漂移等等。組織和團隊越大,問題就越大。所有這些問題都可以通過一個叫做基礎設施即代碼(IaC)的概念被消除或者至少減輕。
基礎設施即代碼(IaC):示例
IaC是一個行業術語,指的是將構建基礎設施組件所需的所有東西存儲在代碼中。該代碼通常以JSON或YAML文件的形式定義,表示你的基礎設施應該看起來像什麼。
一旦所有組件在結構化文件中定義好,另一個過程就會開始理解代碼,並立即開始使用該文件作為構建基礎設施的指示。
舉個通用的偽代碼般的例子,也許你需要創建一個虛擬機器(VM)。該VM有計算、存儲和網絡等需求。一種粗略的基礎架構即代碼(IaC)方法是在一個模板中描述VM和其所有組件。
該模板
在下面的代碼片段中,你可以看到每個組件如何通過層次結構進行分解,並定義每個組件的屬性。這個虛構的例子是在一個JSON文件中創建的,大多數服務會稱之為模板。
該模板定義了VM和與該VM相關聯的所有屬性。它具有一個特定的模式,模板作者遵循該模式來定義VM的外觀。假設然後將此模板保存到一個名為myvm.json的文件中。
源代碼控制
現在你已經將構成VM的所有內容保存在一個單獨的文件中。作為一個優秀的DevOps專業人士,你將該文件檢入源代碼控制系統。現在你有一種追蹤文件變更的方法。
工具
現在,文件已經創建好了,你需要一個能讀取該文件並理解你要構建的內容的工具或服務。該工具使用模板作為輸入,根據該模板的精確規格構建VM,無需其他交互。
不錯,是吧?但這還不是全部。
防止配置漂移
現在假設您需要更改分配給該虛擬機器網卡的靜態IP地址。您可以通過RDP連接到虛擬機並更改IP地址,但您不希望這樣做。為什麼?
- 這樣改變是手動的,浪費時間且容易出錯。
- 無法追蹤誰在何時更改了IP地址。
- 如果您將IP地址輸入錯誤,沒有自動恢復更改的方法。
基礎架構即代碼(IaC)可以解決上述所有挑戰。只需輸入幾個按鍵,您就可以以您的經理和審計員都會喜歡的方式進行更改。
打開myvm.json,更改IPAddress
屬性,將更改提交到源代碼控制並再次運行工具。完成。
該工具將聰明地知道需要進行更改。它不會分離網卡或重建整個虛擬機器。所有IaC工具和服務都足夠聰明,知道如何進行更改。太神奇了!
但現在您剛剛意識到您使用了錯誤的IP地址,需要恢復。沒問題。在源代碼控制中還原更改,提交,運行工具,您就回到正常狀態了。
但等等,還有更多。
持續交付的開始
當您將基礎架構存儲在源代碼控制下的模板中時,您就擁有了自動發布或持續交付流程的開始所需的一組材料。
請記住,您必須在更改模板時每次運行該工具。在自動化的流程/工作流中,該工具會自動運行。一旦創建或對環境進行更改的過程自動化,當您提交對模板的更改時,基礎架構就會匹配。
建立足夠的模板,最終您的整個基礎架構可以用代碼或作為代碼表示。
結論
IaC是一種DevOps方法論,使運營人員能夠參照軟件開發人員的做法。IaC帶來了軟件開發人員多年來一直在利用的許多優勢,並將這些優勢交到系統管理員手中。
Source:
https://adamtheautomator.com/infrastructure-as-code-iac/