IBM Cloud Docs
何謂基礎架構即程式碼?

何謂基礎架構即程式碼?

簡單來說,「基礎架構即程式碼」(IaC) 是使用程式碼來管理及供應敘述性模型中的基礎架構 (網路、虛擬機器、負載平衡器、叢集、服務及連線拓蹼),而不是手動處理程序。

透過IaC,設定檔定義您的基礎架構,這也使得編輯、共用和重複使用設定變得更加容易。 透過將基礎架構編碼,您可以在每次避免未記載的特定配置變更時佈建相同的環境。

Schematics 使用開放程式碼 Ansible 和 Terraform 來提供一組功能強大的 IaC 工具作為服務,以程式設計您的雲端基礎架構。 使用 Schematics,您可以使用這組豐富的 IaC 自動化功能來建置雲端資源堆疊、管理其生命週期、管理其配置中的變更、部署應用程式工作負載,以及執行 day-2 作業。

基礎架構即程式碼的優點

採用 IaC 方法進行基礎架構部署可解決佈建基礎架構的許多一般問題,並提供數個好處。Schematics 可讓您實現這些好處,而不需要安裝、執行及管理您自己的 IaC 工具。

  • 可靠性和一致性: 可靠地佈建新的環境或基礎架構。 手動程序會導致錯誤。 使用 IaC 時,相同的配置會反覆地部署,且不會有任何差異。 IaC 可改善環境與部署之間的一致性。

  • 速度: IaC 可讓您透過自動化快速設定完整基礎架構。 您可以將它套用至每個環境,從開發到正式作業、暫置、QA 等等。 當部署、管理及維護環境的時間減少時,這可能會導致成本降低。

  • 追蹤和責任: 在程式碼中對現有基礎架構進行變更,並追蹤變更。 如同任何原始碼檔案一樣,您可以完整追蹤對配置所做的變更。

  • 偵測並更正環境漂移: 如果在程式碼之外手動修改基礎架構的一部分,則可以在下一次執行時使它與想要的狀態保持一致。 漂移偵測 是 Schematics 工作區的特性。

最佳作法

採用 IaC 進行佈建及配置管理時,有許多建議作法。 使用 Schematics時,完全支援這些實務。

在 IaC 中編纂所有內容

所有基礎架構規格都應該明確編碼在配置檔中,例如 Terraform 配置或 Ansible 教戰手冊。 配置檔是基礎架構規格的單一事實來源,並說明在其配置中使用哪些基礎架構元件?

將文件縮至最小

IaC 是說明文件。 在備妥 IaC 的情況下,配置檔代表文件,且一律保持最新,這可減少工作。 其餘文件是關於程序。 維護版本控制系統中的程式碼。

IaC 配置檔應該保留在版本控制系統 (VCS) 中,例如 GitHub 或 GitLab。 這提供程式碼變更的審核追蹤,但也讓您有機會在變更上線之前分工合作或同層級檢閱及測試變更。

使用此作法,您可以透過加強可追蹤性及可見性,輕鬆追蹤、管理及回復系統的任何潛在變更。

測試

IaC 從軟體開發中借用的其中一個實務是測試。 基礎架構配置的嚴格測試在減少部署後問題方面扮演著重要角色。 與版本控制系統結合時,只要程式碼中有修改,就會自動觸發測試。

在具備「連續整合 (CI)」的情況下,可以在多個環境中實作範本基礎架構配置,例如 developmentUATQAproduction 環境,並有效地套用最小變更。

模組化基礎架構

將基礎架構細分為 模組 可讓您重複使用、改良的可靠性,以及更容易採用的路徑。 類似於在程式設計語言中使用模組和套件。 以下是此作法的好處。

  • 常用配置可以編碼為模組,並在環境之間重複使用多次。
  • 可靠性會隨著模組的測試而增加,並隨著使用時間而變得更堅固。
  • 可重複使用模組的組合可降低採用 IaC 的技能障礙。
  • 更容易在模組層次進行變更及測試。
  • 當配置變更本地化時,變更的風險會降低。

IaC 的宣告式與命令式方法

採用IaC,需要考慮的一個方面是您的工具採用什麼方法。 有兩種不同的風格,宣告式或命令式,有時也被描述為程式式。

宣告式方法定義系統所需的狀態,包括您需要的資源及其應該擁有的任何內容,以及工具為您配置的內容。 工具本身會決定從任何起點進入所需狀態的作業。

命令方法會改為定義實現所需配置所需的特定指令,然後需要以正確的順序執行這些指令。

廚師被認為是必要的工具。 Terraform 分類為宣告式。 Ansible 是宣告式,但也可以與命令指令搭配使用。

宣告式 Terraform 和生命週期管理

Schematics 支援 Terraform 和 Ansible 作為具有 Schematics 工作區和動作的 IaC 工具。 當生命週期管理對於定期啟動並關閉環境很重要時,建議使用 Terraform 搭配 Schematics 工作區。 Terraform 會保留已部署雲端基礎架構的現行狀態記錄,且 Schematics 能夠以反向相依關係順序移除基礎架構,而無需人為介入。

Idempotence

Terraform 和 Ansible 所使用的宣告式接觸的好處是 idempotence。 等冪的作業可以多次執行,並具有相同的最終結果。 在失敗之後重新啟動時,無論先前的狀態或啟動位置為何,佈建的基礎架構與配置一律相同。 此層面是確保使用 Schematics部署之環境的一致性和可重複性的關鍵。

如何使用工具及使用的模組都對 idempotency 有影響。 一般而言,Terraform 和 Ansible 模組會撰寫成等冪。 使用這兩種工具,我們可以撰寫不會產生等冪結果的程式碼。 在這種情況下,配置可能會從想要的目標狀態漂移。 使用 Terraform,當使用 null-resources 透過非等冪的自訂 Script 來延伸提供者功能時,最有可能發生這種形式的漂移。

不變性是一種 IaC 作法,可將從目標狀態漂移的風險降至最低。

不可變

不可變基礎架構是指管理服務及軟體部署,其中會取代而非變更資源 (例如儲存器或虛擬機器) (使用 Script)。 這裡對不可變性的主要需求是避免配置漂移。 由於本端或手動變更或自動化作業順序中的差異而產生的不一致。 這些變更使除錯和解決問題更加困難,並增加支援成本。

若要確保不可變性並消除漂移,所有變更都應該透過 Schematics IaC 配置進行,並且應該在需要更新時重新部署資源 (例如 VSI)。

下一步

現在您對IaC,為什麼不在Schematics中回顧一下IaC的使用: