一,引言
眾所周知,當企業將項目整體架構資源遷移到雲上,雲基礎設施架構師就要根據現有項目搭建整體項目的基礎設施資源的架構,然后我們的雲運維工程師就要根據設計好基礎設施的架構圖來創建雲上資源,但是在構築的過程太單一,太傳統。動動鼠標創建資源的方式成本太高,同時還有一定幾率出錯的風險,這種方式已經不適合現代企業遷移基礎設施架構的方式。如果能夠通過一種 IT 基礎設施架構自動化編排工具來管理維護IT資源豈不能夠大大降低企業在基礎設施構建過程中成本問題,同時也可以提高雲基礎設施開發人員在 IAC(基礎設施即代碼) 方面的技能。
Terraform ----- 是一個基礎設施管理工具,它允許我們以代碼的方式構建、更改和管理基礎設施。Terraform 並不局限於任何特定的雲服務提供商,它可以與多個雲提供商和環境協同工作。雖然 Azure,AWS 分明有針對自己雲平台的資源管理、設置的解決方案。
(1)Azure:ARM 模板(ARM模板是一個定義項目基礎結構和配置的 JavaScript 對象表示法 (JSON) 文件。 該模板使用聲明性語法,使你可以指明要部署的內容,而不需要編寫一系列編程命令來創建內容。 在該模板中,指定要部署的資源以及這些資源的屬性。)
(2)AWS:CloudFormation(AWS CloudFormation 是一項服務,可幫助您對 Amazon Web Services 資源進行建模和設置,以便能花較少的時間管理這些資源,而將更多的時間花在運行於 AWS 中的應用程序上。您創建一個描述您所需的所有 AWS 資源(如 Amazon EC2 實例或 Amazon RDS 數據庫實例)的模板,並且 AWS CloudFormation 將負責為您設置和配置這些資源。)
Terraform CLI 提供一種簡單機制,用於將配置文件部署到 Azure 並對其進行版本控制,使用 Terraform 基於模板的配置文件,能夠以可重復、可預測的方式定義、預配和配置 Azure 資源。
在本系列博客文章中,我將詳細介紹有關使用Terraform以及為Microsoft Azure基礎結構設置持續部署和測試的一些最佳實踐。
許可支持 | 模塊化 | 狀態管理 | 導入現有資源 | 可視化依賴 | 語言 | 驗證 | |
![]() |
免費、開源,來自 Hashicorp 和社區的支持 | Terraform Registry中提供了一些可用於模塊化模板的功能介紹和使用示例。我們可以將這些獨立的模塊進行拼接,使得模塊之間能夠建立聯系。 | 默認情況下,將狀態保存在本地,但是可以使用遠程狀態功能將狀態保存在Terraform Cloud,Storage Account | 可以將現有資源導入terraform來管理 | 可以使用terraform graph命令生成配置或執行計划的直觀表示。 | HCL是Terraform的配置語言,它是HashiCorp發明的一種聲明式語言 | 提供了檢查模板文件語法錯誤 |
--------------------Azure Terraform 系列--------------------
1,Azure Terraform(一)入門簡介
2,Azure Terraform(二)語法詳解
3,Azure Terraform(三)部署 Web 應用程序
4,Azure Terraform(四)狀態文件存儲
5,Azure Terraform(五)利用Azure DevOps 實現自動化部署基礎資源
6,Azure Terraform(六)Common Module
7,Azure Terraform(七)利用Azure DevOps 實現自動化部署基礎資源(補充)
8,Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程序的持續集成、持續部署
二,正文
1,下載並安裝 Terraform
(1),使用chocolatey 安裝
需要安裝Terraform,請使用 CMD 或者 PowerShell 中運行一下命令
choco install terraform
特意說明一下,我這里使用的是 chocolatey 包管理器進行下載安裝 terraform
chocolatey 安裝方式:https://chocolatey.org/install
(2),下載terraform 安裝包
Terraform 下載鏈接:https://www.terraform.io/downloads.html
記得下載完成的 Terraform 文件之后,將其配置到環境變量中
兩個方式安裝完成后並且配置后,測試是否配置成功
2,創建 Terraform 項目
打開 VS CODE 創建 terraform_demo_code 文件夾,並且在此文件夾中創建名為 “main.tf” 文件,作為基本的Terraform 配置文件
指定雲提供者,配置資源組代碼塊,並保存
provider "azurerm" { version = "~>2.0" features {} } resource "azurerm_resource_group" "example" { name = "Web_Test_TF_RG" location = "East Asia" }
3,初始化並執行Terraform
3.1,在初始化 terraform 部署之前,我們需要向Azure 進行驗證身份,terraform 支持多種向Azure 進行身份驗證的選項
(1),通過 Azure 賬號登陸進行身份驗證
(2),通過配置Azure 服務主題進行身份驗證
注意這里的方式的身份方式二選一,盡量不要
方式一,直接在 CMD 中執行
az login
使用Azure 賬號進行微軟賬號身份驗證,輸入登陸用戶名,密碼即可完成身份驗證
提示已經登陸到微軟Azure
CMD 中也可以看到登陸成功的提示
方式二,配置服務主體
創建一個具有“參與者”角色的服務主體。 此“參與者”角色(默認角色)具有讀取和寫入到 Azure 帳戶的完全權限
這個可以參考我之前講解的 Azure AD(四)知識補充-服務主體,文中有介紹如何創建服務主題
接下來我們需要將生成好的 “appId”,“password”,"tenant",“subscriptionid” 配置到環境變量中
setx ARM_SUBSCRIPTION_ID xxxx-xxxx-xxxx-xxxx setx ARM_CLIENT_ID xxxx-xxxx-xxxx-xxxx setx ARM_CLIENT_SECRET xxxx-xxxx-xxxx-xxxx setx ARM_TENANT_ID xxxx-xxxx-xxxx-xxxx
注意,我在此演示使用的時方法一
3.2,認證完成后,就可以開始執行Terraform 的初始化操作了
CMD 中執行 terraform init 下載創建 Azure 資源組所需的 Azure 模塊
terraform init
3.3,terraform plan 執行計划
CMD 中執行 terraform plan 創建執行計划,這個執行計划可以理解為 terraform 會預處理執行,展示那些資源被創建,修改,刪除,此執行計划不會真的執行,只驗證執行計划是否符合預期
terraform plan
3.4,terraform apply 執行部署計划到雲端
CMD 中執行 terraform apply 執行部署計划
terraform apply
執行完成后,需要一個確認過程,輸入 “yes” 確認同意此次操作
接下來,我們就可以通過控制台看到執行部署過程的日志信息,資源組創建完成
為了檢驗真實性,我們登陸到Azure portal 中查看所以資源組,檢查一下是否名為 "Web_Test_TF_RG" 的資源組被創建完成
bingo,大功告成。
3.5,銷毀通過 terraform 創建的資源
撤銷,銷毀通過terraform 執行部署計划的資源,CMD 中執行 terraform destroy 執行部署銷毀計划
terraform destroy
執行完成后,需要一個確認銷毀的確認過程,輸入 “yes” 確認同意此次操作
接下來,我們就可以通過控制台看到執行銷毀過程的日志信息,資源組被刪除
再次回到Azure Portal 中查看所有資源組,名為“Web_Test_TF_RG” 已經被刪除
*★,°*:.☆( ̄▽ ̄)/$:*.°★* ,截至到現在,通過以上步驟,我們具備了在Microsoft Azure上開始使用Terraform的所有基礎知識,創建,刪除資源。
三,結尾
今天的內容不多,實戰演示了通過 terraform 這種 iac 工具實現管理雲基礎設施,利用Terraform這把利器,節約資源開銷,提高從部署到運維的自動化生產力。
參考資料:Azure 上的Terraform
作者:Allen
版權:轉載請在文章明顯位置注明作者及出處。如發現錯誤,歡迎批評指正。