基礎架構即代碼 (IaC) 可自動配置基礎架構,使您的組織能夠以更快的速度、更低的風險和更低的成本開發、部署和擴展雲應用程序。
基礎架構即代碼 (IaC) 使用高級描述性編碼語言來自動配置 IT 基礎架構。
這種自動化消除了開發人員每次想要開發、測試或部署軟件應用程序時手動配置和管理服務器、操作系統、數據庫連接、存儲和其他基礎設施元素的需要。
在壹個企業每天將數百個應用程序部署到生產環境中並不少見的時代——當基礎設施不斷地旋轉、拆除、擴大和縮小以響應開發人員和用戶的需求時——這對於組織來說至關重要自動化基礎設施,以控制成本、降低風險並快速響應新的商機和競爭威脅。
IaC 使這種自動化成為可能。
IaC 也是必不可少的DevOps實踐,對於具有競爭力的軟件交付生命周期必不可少。
它使 DevOps 團隊能夠以與版本源代碼相同的方式快速創建和版本基礎設施並跟蹤這些版本,以避免 IT 環境之間的不壹致,從而在部署期間導致嚴重問題。
配置傳統 IT 是壹個耗時且成本高昂的過程,需要專家人員進行硬件的物理設置、操作系統軟件的安裝和配置以及與中間件、網絡、存儲等的連接。
虛擬化和雲原生開發消除了物理硬件管理的問題,使開發人員能夠按需配置自己的虛擬服務器或容器。
基礎架構即代碼 (IaC) 是使開發人員能夠通過執行腳本有效地“訂購”完整記錄的版本化基礎架構的最後壹步。
好處正是您可以想象的:
由於它對所有內容進行了編碼和記錄,因此 IaC 甚至可以自動配置遺留基礎設施,否則這些基礎設施可能會受到耗時過程(如拉票)的控制。
在開發需要滿足嚴格的法規遵從標準的應用程序和服務時,這可能會導致部署問題、安全漏洞和風險。
IaC 通過每次配置相同的環境來防止漂移。
開發人員可以快速配置沙箱和持續集成/持續部署(CI/CD) 環境。
QA 可以快速提供全保真測試環境。
運營部門可以快速為安全和用戶接受測試提供基礎設施。
當代碼通過測試時,可以壹步部署應用程序和運行它的生產基礎設施。
如果其中壹位專家離開了組織,有時會留下其他人來重建流程。IaC 確保供應智能始終保留在組織中。
它還使開發人員能夠花更少的時間在管道上,而將更多的時間用於開發創新的任務關鍵型軟件解決方案。
在使用基礎架構即代碼 (IaC) 自動化基礎架構以及選擇 IaC 解決方案時,需要做出的壹個重要決定是建立 可變 基礎架構還是 不可變 基礎架構。
可變基礎設施 是在最初配置後可以修改或更新的基礎設施。
可變基礎架構使開發團隊能夠靈活地進行臨時服務器定制,例如,更緊密地適應開發或應用程序需求或響應緊急安全問題。
但是,它也破壞了 IaC 的壹個關鍵優勢——在部署之間或版本內保持壹致性的能力——並且會使基礎設施版本跟蹤變得更加困難。
由於這些原因,大多數 IaC 被實施為 不可變的基礎設施 ——壹旦最初提供就無法修改的基礎設施。
如果需要更改不可變的基礎設施,則必須用新的基礎設施替換它。
因為新的基礎設施可以在雲上快速啟動——尤其是使用 IaC——不可變的基礎設施比聽起來更可行和實用。
不可變的基礎設施將 IaC 帶到了下壹個合乎邏輯的步驟,從本質上強化了 IaC 以進壹步確保它提供的好處。
這幾乎消除了配置漂移,並使維護測試和部署環境之間的壹致性變得更加容易。
它還可以更輕松地維護和跟蹤基礎架構版本,並在必要時自信地回滾到任何版本。
在 命令式 方法(也稱為程序方法)中,該解決方案可幫助您準備自動化腳本,壹次為您的基礎設施提供壹個特定步驟。
雖然隨著您的擴展,這可能需要更多的工作來管理,但現有的管理人員可以更容易理解並可以利用您已經擁有的配置腳本。
使用 GPS,您輸入壹個地址,其余的工作由 GPS 完成,為您繪制最快的路線並避開交通——但您可能需要專家告訴您它做出選擇的原因。
轉彎指示基於個人經驗;提供者知道路線以及他/她選擇路線的原因,但如果您遇到障礙或想要優化路線,您必須尋求幫助或自己動手。
雖然有許多開源 IaC 工具可用,但最常用的工具是 Ansible 和 Terraform:
Ansible 是壹個由 Red Hat 贊助的開源社區項目,旨在幫助組織自動化供應、配置管理和應用程序部署。
Ansible 是自動配置Docker容器和Kubernetes部署的流行選擇。
Terraform 與所有領先的雲提供商合作,讓您可以並行地跨多個提供商自動構建資源,而不管物理服務器、DNS 服務器或數據庫位於何處。
它還可以提供以任何語言編寫的應用程序。
與 Ansible 不同,Terraform 不提供配置管理功能,但它與配置管理工具(例如 Cloud Formation)協同工作,以自動配置處於配置文件描述的狀態的基礎設施,並在必要時自動更改更新配置以響應到配置更改。