Terraform基礎概念一
- 1.Infrastructure-as-Code(IaC)概念
- 1.1 IaC優勢
- 1.2 IaC工具
- 1.3 IaC的兩種方式
- 2.Terraform基礎概念
- 2.1 Terraform工作原理
- 2.2 Terraform 工作流
- 3.總結
1.Infrastructure-as-Code(IaC)概念
基礎設施即代碼(Infrastructure-as-Code,IaC)意味著使用代碼來定義和管理基礎設施。簡單理解來說,就是利用代碼的方式來實現對基礎設施配置,避免手動配置的繁瑣和可能導致的錯誤。
1.1 IaC優勢
借助自動化流程,IaC 協助企業以多種方式管理其 IT 基礎設施需求。以下是部署 IaC 的部分優勢:
- 提升架構一致性:IaC 可提高一致性并減少通常會在手動配置過程中發生的錯誤。其還能夠消除手動流程期間可能會發生的配置漂移。IaC會整理和記錄您的配置規格,進而協助您避免出現未記錄的臨時配置改變。
- 降低運維成本:IaC 可通過編程方式管理虛擬機,這樣就不必手動配置硬件及更新。一位操作員使用同一組代碼,即可部署并管理一臺機器或 1,000 臺機器。這樣就意味著,需要的員工減少,不必再購買新硬件,成本會因此大幅降低。
- 提升操作效率:基礎設施編碼化可為您提供配置模板,進而簡化系統配置、維護和管理。其可以打造出可重復、可擴展的彈性基礎設施。這也意味著,DevOps能夠加速軟件開發的各個環節,每天能發布的應用也將更多。
- 加快部署速度:IaC能將開發人員耗時冗長的配置工作轉變為簡單的腳本執行,通過腳本執行就能讓其基礎設施準備就緒。因此,部署應用不再需要等待基礎設施,新軟件的發布也大大提速。
- 降低操作風險:IaC 也支持版本控制,因此,配置文件也會和其他任何軟件源代碼文件,歸入源代碼控制。如此,風險就會降低。
1.2 IaC工具
- Chef
- Puppet
- Ansible
- Saltstack
- Terraform
- AWS CloudFormation
- Aliyun ROS資源編排
- Tencent TIC資源編排
1.3 IaC的兩種方式
- 聲明式:聲明式方法也稱為功能性方法,明確定義了系統的理想狀態,但未明確指出達到該狀態的方法。這種方法可讓您明確名義想要的資源,包括必需的屬性。IaC 軟件會自動配置理想的基礎設施,聲明式 IaC 工具將會自動應用作出的任何改變。聲明式 IaC 可多次執行且結果相同,無需人為干預。如AWS CloudFormation、Terraform、Puppet
- 命令式:相比之下,命令式方法可讓您明確定義配置基礎設施的方式,以及實現的方法。命令式方法也叫作過程式方法,明確定義了實現特定配置所需的命令。之后需要按照正確的順序執行這些命令,一次一個步驟。這個方法較脆弱,依靠的是明確的指示,不接受任何更新。需要改變時,命令式
IaC 工具將會要求操作員解讀應如何應用這些改變。如:Chef、Ansible。
2.Terraform基礎概念
2.1 Terraform工作原理
首先,Terraform
讀取.tf
文件的內容,然后Terraform
通過RPC
的方式,根據供應商提供PROVIDES
,通過調用API
的方式生成云資源。
2.2 Terraform 工作流
3.總結
- Terraform是一個可以安全、高效地建立、變更、以及版本化管理基礎設施的工具,可以在主流的服務提供商上提供自定義的解決方案;
- 以配置文件為驅動,在文件中定義所需要管理的組件(基礎設施),以此生成一個可執行的計劃,通過執行這個計劃來完成所定義組件的創建、增量式的變更和持續的管理。
- Terraform不僅可以管理Iaas的資源,也可以管理更上層的服務,如PaaS,SaaS等。