Azure Terraform(一)入門簡介

Grant_Allen發表於2020-12-25

一,引言

  眾所周知,當企業將專案整體架構資源遷移到雲上,雲基礎設施架構師就要根據現有專案搭建整體專案的基礎設施資源的架構,然後我們的雲運維工程師就要根據設計好基礎設施的架構圖來建立雲上資源,但是在構築的過程太單一,太傳統。動動滑鼠建立資源的方式成本太高,同時還有一定機率出錯的風險,這種方式已經不適合現代企業遷移基礎設施架構的方式。如果能夠通過一種 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發明的一種宣告式語言 提供了檢查模板檔案語法錯誤

二,正文

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 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

相關文章