基礎設施即代碼(IaC):方法論、辦法和優(yōu)秀實踐
譯文【51CTO.com快譯】IaC的概述
由于現(xiàn)在的一切都致力實現(xiàn)數(shù)字化,尤其是在發(fā)生冠狀病毒疫情之后,現(xiàn)在正確管理組織的IT基礎設施變得尤為重要。
在此之前,對IT基礎設施的管理都是由組織的系統(tǒng)管理員人工完成的。他們管理了應用程序運行所需的所有硬件和軟件。在過去的幾年中,IT技術取得了長足的進步,現(xiàn)在除了這種人工管理之外,還有一種替代方法,其名稱為“基礎設施即代碼(IaC)”。
在此可以采用一種更具描述性的術語來定義IaC:基礎設施即代碼(IaC)是通過機器可讀的定義文件而不是通過物理硬件配置或交互式配置工具來管理和設置數(shù)據(jù)中心的過程。
IaC基礎設施即代碼(IaC)解決了之前存在的問題,例如人工實施環(huán)境構建和批準流程、高成本、硬件問題,以及人為錯誤。
IaC的方法論
以下了解一下“基礎設施即代碼”的四種方法:
1.臨時腳本
臨時腳本是用于流程實現(xiàn)自動化的最直接的方法。這些腳本只需將人工流程分解為離散的步驟即可將其轉換為自動化流程。組織可以借助Ruby、Python、Bash、PowerShell等腳本語言來實現(xiàn)這一目的。
如果組織運行一個臨時腳本,肯定會提供預期的結果,并且其運行過程也相當簡單。但是,如果組織多次運行同一個臨時腳本,則可能會出現(xiàn)錯誤。例如,如果使用臨時腳本創(chuàng)建文件夾,則必須再次檢查該文件夾是否仍然存在。
以下是臨時腳本的工作流程:
- 進行人工操作,并將其分解為離散的步驟。
 - 選擇喜歡的腳本語言。
 - 在代碼中定義和寫入這些步驟。
 
2.配置管理工具
配置管理工具旨在現(xiàn)有服務器上安裝和管理軟件。這些工具的代碼具有一致且可預測的結構,明確命名的參數(shù),適當?shù)臋C密管理,甚至是簡單的文件布局。
一些配置管理工具包括Ansible、Chef、Puppet和SaltStack。這些工具也稱為冪等性代碼。冪等性代碼是產(chǎn)生相同結果的代碼或腳本,無論運行或執(zhí)行多少次相同的代碼。
上述配置管理工具的設計方式使其可以在現(xiàn)有服務器上安裝和管理軟件。例如,Ansible將YAML文件用于運行手冊。他們還可以管理大量的遠程服務器。
3.服務器模板
服務器模板工具用于創(chuàng)建服務器映像。這一圖像捕獲了操作系統(tǒng)、軟件、文件以及所有其他相關詳細信息的獨立“快照”。它們被認為是配置管理工具的替代方法。一些流行的服務器模板化工具包括Docker、Packer和Vagrant。
以下更詳細地了解一些工具:
- Docker:Docker用于為稱為“容器”的應用程序創(chuàng)建隔離的環(huán)境。
 - Packer:它有助于打包所有依賴項并構建可部署的虛擬機映像。
 - Vagrant:用于為開發(fā)環(huán)境配置虛擬機。Vagrant在虛擬機解決方案(例如VirtualBox、VMware、Hyper-V等)上運行。
 
使用服務器模板工具,在部署服務器之后就無需進行任何更改。如果要部署修改后的代碼,則必須創(chuàng)建一個新映像,然后將其部署在新服務器上。這就是使用服務器模板工具對于不可變基礎設施來說是必不可少的原因。
4.服務器配置
服務器設置就是設置服務器的過程,以便可以根據(jù)所需資源在網(wǎng)絡中使用服務器。它包含創(chuàng)建新服務器并使其處于工作狀態(tài)所需的所有操作,并且包括定義系統(tǒng)的所需狀態(tài)。
可以幫助創(chuàng)建服務器的一些服務器配置工具包括Terraform、Azure資源管理器模板、AWS Cloud Formation和Open Stack Heat。
Terraform是一種云計算基礎設施配置工具,支持各種公共和私有云資源調配。它有助于使用一個名為狀態(tài)文件的概念來維護基礎設施的狀態(tài)。
除了創(chuàng)建服務器之外,上述服務器設置工具還可以使組織能夠創(chuàng)建其他資源,例如數(shù)據(jù)庫、負載平衡器、防火墻設置、存儲等。
IaC辦法
將基礎設施作為代碼有兩種主要辦法,分別是命令式辦法和聲明式辦法。在這兩種辦法中,IaC的配置都是在模板上完成的,其中描述了基礎設施中每個服務器所需的資源。
以下更詳細地了解這兩種辦法,并了解兩者之間的區(qū)別。
1.命令式辦法
該辦法定義了實現(xiàn)所需配置所需的特定步驟或命令。它還定義了執(zhí)行這些命令的正確順序?;旧?,它處理“如何”實施的問題,也就是如何實現(xiàn)所需的配置。

2.聲明式辦法
這種辦法定義了系統(tǒng)的期望狀態(tài)。除了狀態(tài)之外,只需要定義其他信息,例如所需的資源和屬性,并且IaC工具將自行配置所有內容。它處理“什么”的問題,也就是配置所需的狀態(tài)。
IaC跨平臺景觀
IaC的優(yōu)秀實踐
組織可以使用以下一些優(yōu)秀實踐來充分利用IaC:
1.逐步實施
當轉向基礎設施即代碼時,對于許多員工(尤其是老員工)來說,這可能是一個挑戰(zhàn)性的過程。這是因為他們對技術以及如何為組織的正常運作沒有太多的經(jīng)驗。因此,組織員工越容易掌握IaC,將能夠提供更好的輸出。
2.將所有內容進行整理
IaC的全部目的是使所有內容實現(xiàn)自動化,并盡可能地消除所有的人工工作,因此,需要嘗試對整個基礎設施進行整理。在配置文件中明確所有基礎設施規(guī)范。與基礎設施管理有關的所有內容都應該在這些配置文件中。
3.持續(xù)測試、集成和部署
IaC是一種代碼,與其他任何代碼一樣,它也應該被持續(xù)測試、集成和部署。這有助于檢查服務器在部署到生產(chǎn)之前可能發(fā)生的任何錯誤或不一致。它還確保整個基礎設施功能不存在任何滯后或錯誤。
4.不可變的基礎設施
如上所述,不可變的基礎設施是指部署后從未修改或更新的服務器或虛擬機。它有助于降低IT復雜性和故障,提高安全性,并使故障排除更加容易。不可變的基礎設施還消除了任何類型的服務器修補。
5.版本控制
建議將所有配置文件都置于源代碼管理之下,這也是“代碼實踐”中推薦的基礎設施。版本控制對于跟蹤更改并使每個團隊成員都能使用最新版本很重要。它應用于多個團隊成員正在協(xié)作的所有代碼和資產(chǎn)。
除了管理和跟蹤文件之外,它還有助于更快地開發(fā)和交付產(chǎn)品。這是可行的方法,因為它有助于提高團隊成員的可見性、協(xié)作性,并加速產(chǎn)品交付。
6.模塊化
模塊化可以定義為模塊的開發(fā),可以通過編寫許多運行手冊或模塊以各種方式將其結合或集成在一起。這些模塊可以在將來的任何一個項目中重復使用。
結論
現(xiàn)在,基礎設施的自動化是組織中每個團隊的主要需求。迫切需要將人工管理和配置的基礎設施轉移到IT或自動化基礎設施,以更輕松、更高效地運行和管理系統(tǒng)。
對于這種自動化,可以使用許多工具和方法。而只采用一種工具將無法滿足組織或團隊的要求。因此,應該根據(jù)組織的要求和各種其他因素(例如成本、技能、功能等)來選擇工具。
原文標題:Infrastructure-as-Code (IaC): Methodologies, Approach, and Best Practices,作者:Mir Ali
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】




















 
 










 