什麼是基礎結構即程序代碼 (IaC)?

基礎結構即程式代碼 (IaC) 使用 DevOps 方法和版本設定搭配描述性模型來定義和部署基礎結構,例如網路、虛擬機、負載平衡器和聯機拓撲。 如同相同的原始程式碼一律會產生相同的二進位檔,IaC 模型會在每次部署時產生相同的環境。

Diagram of infrastructure as code defining the environment in a versioned file.

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 的原生支援。 Teams 可以定義宣告式 ARMBicep 範本,以指定部署解決方案所需的基礎結構。

Terraform、AnsibleChef 和 Pulumi 等第三方平臺也支援 IaC 來管理自動化基礎結構。