什麼是基礎設施即程式碼?
基礎設施即程式碼 (IaC) 使用 DevOps 方法和版本控制以及描述性模型來定義和部署基礎設施,例如網路、虛擬機器、負載均衡器和連線拓撲。IaC 模型每次部署時都會建立相同的環境,就像相同的原始碼始終生成相同的二進位制檔案一樣。
IaC 是一個重要的 DevOps 實踐,也是持續交付的一部分。DevOps 團隊可以使用 IaC 來協作使用一致的技巧和工具,以快速可靠地大規模交付應用程式和支援基礎設施。
基礎設施即程式碼的優勢
採用 IaC 的公司可以獲得以下優勢:
速度 - 基礎設施安裝快速且安全,因為它們不需要操作員參與。
原始碼管理 - 程式碼可以在原始碼控制下進行驗證,以促進透明度和問責制。
文件 - 基礎設施程式碼提供了基礎設施當前狀態的動態文件。
一致性 - 透過在整個環境中部署類似的基礎設施,避免邊緣情況和一次性設定。
敏捷性 - DevOps 提高了軟體交付的效率,而 IaC 為基礎設施管理增加了敏捷性。
可重用性 - IaC 使得設計可重用模組變得簡單,例如用於複製開發和生產環境的模組。
基礎設施即程式碼是如何工作的?
基礎設施即程式碼可以分為三個簡單的階段:
開發人員使用特定領域語言編寫基礎設施定義。
輸出檔案被傳遞到主伺服器、管理 API 或程式碼儲存庫。
平臺執行建立和配置計算資源所需的所有過程。
宣告式與命令式基礎設施即程式碼
在處理 IaC 工具時,有兩種基本方法可以開發程式碼。這些是宣告式和命令式技術。
命令式方法允許使用者描述要為更改執行的特定操作,並且系統完全遵循這些過程。
宣告式方法意味著使用者需要宣告最終結果,而單個工具或平臺會管理為實現所需結果而遵循的操作。
在大多數基礎設施管理用例中,選擇宣告式方法,因為它在管理基礎設施時提供了更好的靈活性。
基礎設施即程式碼 (IaC) 的型別
開發人員可以選擇四種基本形式的 IaC:
指令碼 - 最簡單的 IaC 方法是編寫指令碼。臨時指令碼非常適合執行基本、簡短或一次性操作。但是,對於更復雜的配置,建議選擇更專業的選項。
配置管理軟體 - 這些是專業的軟體管理工具,有時稱為配置即程式碼。它們通常專注於伺服器安裝和配置。Chef、Puppet 和 Ansible 是這些工具的一些示例。
供應裝置 - 供應工具專注於基礎設施建立。開發人員可以使用這些工具來指定特定的基礎設施元件。Terraform、AWS CloudFormation 和 OpenStack Heat 就是這方面的例子。
容器和模板軟體 - 這些工具建立包含執行應用程式所需的所有庫和元件的模板或映象。容器化工作負載易於分發,並且比執行完整大小的伺服器的開銷要低得多。Docker、rkt、Vagrant 和 Packer 就是一些例子。
IaC 工具
基礎設施即程式碼工具設定和自動化基礎設施供應。透過編排功能,這些系統可以自動化伺服器等基礎設施的部署。它們還可以配置和監視已供應的系統。
基礎設施即程式碼技術使用推送或拉取技術來從模板強制執行設定。推送方法使用集中式伺服器將所需配置分發到指定系統或系統。拉取方法由基礎設施中的系統或系統向集中式伺服器發出請求來啟動。工具通常預設構建為推送或拉取程式碼部署,但可以針對特殊情況進行配置以執行相反的操作。這些工具還應該能夠撤消程式碼修改,例如在出現錯誤時。
AWS CloudFormation、Red Hat Ansible、Chef、Puppet、SaltStack 和 HashiCorp Terraform 是基礎設施即程式碼技術的示例。一些工具使用特定領域語言 (DSL),而另一些工具使用通用模板格式,例如 YAML 或 JSON。
組織在選擇工具時應評估目標部署。例如,AWS CloudFormation 旨在在 AWS 上部署和管理基礎設施,並與其他 AWS 服務整合。Chef 還與本地伺服器和各種雲提供商的基礎設施即服務解決方案一起使用。
結論
IaC 是一種非常高效的配置管理型別,專注於自動化雲 IT 基礎設施的管理。一旦 IaC 就位,它就可以用於實現專案中基礎設施更改的 CI/CD 自動化程度。IaC 提供了許多關於圍繞基礎設施改進的溝通和透明度的有用見解。IaC 需要一些依賴項,例如託管平臺和自動化工具,這兩者通常都可以從當前的託管公司獲得。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP