什麼是基礎結構即程序代碼 (IaC)?
基礎結構即程序代碼 (IaC) 使用 DevOps 方法和版本設定搭配描述性模型來定義和部署基礎結構,例如網路、虛擬機、負載平衡器和連線拓撲。 如同相同的原始程式碼一律會產生相同的二進位檔,IaC 模型會在每次部署時產生相同的環境。
IaC 是重要的 DevOps 做法,也是 持續交付元件。 透過 IaC,DevOps 小組可以與一組統一的實務和工具合作,以快速且可靠地大規模提供應用程式和其支援的基礎結構。
為了確保一致性,避免手動設定
IaC 已演變成解決發行管線中 環境偏移 的問題。 如果沒有 IaC,小組必須個別維護部署環境設定。 經過一段時間后,每個環境都會變成「雪花」,這是無法自動重現的唯一設定。 環境之間的不一致可能會導致部署問題。 基礎結構管理和維護牽涉到容易出錯且難以追蹤的手動程式。
IaC 會透過 JSON 等格式記載良好的程式碼來表示所需的環境狀態,以避免手動設定並強制執行一致性。 使用 IaC 的基礎結構部署是可重複的,並防止因設定漂移或遺失相依性所造成的運行時間問題。 發行管線會執行環境描述和版本設定模型,以設定目標環境。 若要進行變更,小組會編輯來源,而不是目標。
等冪,給定作業一律產生相同結果的能力,是重要的 IaC 原則。 不論環境的啟動狀態為何,部署命令一律會將目標環境設定為相同的組態。 若要實現等冪性,可以自動配置現有目標,或者捨棄現有的目標並重新建立一個新的環境。
實用的工具
大規模提供穩定的測試環境
IaC 可協助DevOps小組在開發週期早期在類似生產環境中測試應用程式。 Teams 可以依需求可靠地布建多個測試環境。 雲端會根據 IaC 定義動態地佈建和撤除基礎設施環境。 基礎結構程式代碼本身可以進行驗證和測試,以防止常見的部署問題。
使用宣告式定義檔案
如果可能的話,IaC 應該使用宣告式定義檔案。 定義檔描述環境所需的元件和組態,但不一定如何達成該設定。 例如,檔案可能會定義必要的伺服器版本和組態,但未指定伺服器安裝和組態程式。 此抽象概念可讓您更彈性地使用基礎結構提供者提供的優化技術。 宣告式定義也有助於減少維護指令式程式代碼的技術債務,例如部署腳本程式,可能會隨著時間累積。
宣告式 IaC 沒有標準語法。 描述 IaC 的語法通常取決於目標平臺的需求。 不同的平台支援檔格式,例如 YAML、JSON 和 XML。
在 Azure 上部署 IaC
Azure 透過 Azure Resource Manager 模型提供 IaC 的原生支援。 團隊可以使用 JSON 語法或 Bicep 來定義所需的宣告式 ARM 範本,以指定部署解決方案的基礎結構。 您也可以透過特定 Azure 提供者取得第三方解決方案,例如 Terraform。