本文將為您介紹基礎設施即代碼的概念,以及阿里雲相關的基礎設施即代碼工具。
基礎設施即代碼 (Infrastructure as Code, IaC) 是指以代碼(而不是圖形化介面或命令列指令碼)形式對計算基礎設施進行描述、部署和維護的技術。它可以通過編寫可執行檔代碼來定義和自動化基礎設施的建立、配置和更新,從而實現基礎設施的可持續傳遞。
對基礎設施管理通常涉及到網路環境的配置、虛擬機器執行個體的建立和管理、資料庫的串連、儲存的配置以及其他基礎設施元素的操作。IaC 主要解決了手動管理和配置基礎設施帶來的問題。傳統的基礎設施管理方式容易出現人為錯誤、部署不一致、重複勞動等問題。通過 IaC,可以降低配置錯誤和人為操作帶來的問題,並實現更高效、可靠的基礎設施管理。
IaC 讓您以設定檔的方式定義基礎設施,並允許您指定期望的基礎設施狀態。通過設定檔定義的基礎設施可使其具備版本控制、複用和功能的能力,同時以一種安全且可重複的方式持續建立、修改和管理基礎設施,使得同一份配置可以通過多次部署來建立可複現的開發、測試和生產環境。
IaC 設定檔本質上也是一種代碼,結合 DevOps 理念,可以將應用開發與自動化發布相結合。通過使用 IaC,可以將應用的部署和配置以代碼的方式描述,並整合到 CI/CD 流水線中,實現快速、頻繁的應用發布。
如需瞭解更多,請參閱什麼是基礎設施即代碼(IaC)?。
IaC 的優勢
IaC 具備以下優勢:
複用性
您可以基於自身業務的需求將業務架構所依賴的基礎設施資源定義為 IaC 的設定檔,並且使用相同的設定檔來持續的建立和管理多個環境(如開發、測試、生產等)
自動化
您可以基於 IaC 實現對雲資源的自動化建立和管理,無需關注資源建立的細節
流程化
您可以以變更應用的方式來處理基礎設施資源的更改。例如,您可以確保 IaC 設定檔的任何修改是經過審核和自動驗證的,並結合自動化的流程式控制制來管理應用環境。
可審計
您可以保留所有 IaC 設定檔的變更記錄,進而實現對資源的審核和變更還原。
適用於阿里雲的 IaC 工具和服務
阿里雲與許多 IaC 工具實現了整合,您可以根據您的應用情境選擇以下的工具:
Terraform
通常,如果您想使用配置代碼來定義和管理阿里雲的基礎設施資源,推薦使用阿里雲的 Terraform Provider。
Terraform 是 Hashicorp 開源一款 IaC 工具,您可以通過易讀的設定檔(HCL 檔案)來定義阿里雲上和本地的資源,並可以對這些資源進資料列版本設定、重複使用、共用,並使用一致的自動化工作流程實現對基礎設施資源全生命週期的建立和管理。
如需瞭解更多詳情,請參閱Terraform產品介紹。
Terraform Explorer
Terraform 是一款用戶端的工具,如果您希望通過介面化的方式使用 Terraform,推薦使用 Terraform Explorer。
Terraform Explorer 基於開源版 Terraform 構建的一款線上調試 Terraform 的工具,可讓您以可視化的方式實現對 Terraform 的設定檔的快速產生和自動執行,而無需安裝和維護 Terraform,無需擔心不會編寫 Terraform 設定檔,無需維護和管理狀態。
如需瞭解詳情,請參閱Explorer 介紹。
Resource Orchestration Service
Resource Orchestration Service服務ROS(Resource Orchestration Service)是阿里雲提供的一項簡化雲端運算資源管理和採用基礎設施即代碼(IaC)設計理念的自動化部署服務。開發人員和管理員可以編寫模板,在模板中定義所需的阿里雲資源(例如:ECS執行個體、RDS資料庫執行個體)、資源間的依賴關係等。ROS的編排引擎將根據模板自動完成所有資源的建立和配置,實現自動化部署及營運。
如需瞭解詳情,請參閱什麼是Resource Orchestration Service服務。
Terraform Cloud 和 Terraform Enterprise
除了開源版的 Terraform,Hashicorp 還提供了面向企業組織管理的 Terraform 企業版。如果您希望在整個企業組織中使用 Terraform 來實現對基礎設施資源的統一管理,可以使用 Terraform Cloud 或 Terraform Enterprise。如需瞭解詳情,請參閱 Hashicorp Terraform 版本。
CDKTF
如果您想使用通用程式設計語言而不是 Hashicorp 配置語言 (HCL) 來產生基礎設施的設定檔,可以使用適用於 Terraform 的雲開發套件 (Cloud Development Kit for Terraform, CDKTF)。
CDKTF 可以讓您使用熟悉的程式設計語言(如 Java,Golang,Python,TypeScript等)來定義和自動產生阿里雲基礎設施的 Terraform 模板,並通過 CDKTF 的命令(deploy)調用 Terraform 來實現對阿里雲基礎設施的自動化配置和管理。
這種形式的優點是它結合了聲明式和命令式的優點,提供了靈活性和自動化的平衡。如需瞭解詳情,請參閱CDK for Terraform。
Pulumi
和 CDKTF 類似,Pulumi是另一種可用於使用通用程式設計語言來定義和配置基礎設施的工具。您可以使用適用於阿里雲的 Pulumi Provider來編寫基礎設施代碼。
Ansible
如果您想要自動執行預配、組態管理、應用部署、編排和其他 IT 流程,可以使用營運編排工具 Ansible。