Azure Terraform(一)入門簡介

一,引言

  衆所周知,當企業將項目總體架構資源遷移到雲上,雲基礎設施架構師就要根據現有項目搭建總體項目的基礎設施資源的架構,而後咱們的雲運維工程師就要根據設計好基礎設施的架構圖來建立雲上資源,可是在構築的過程太單一,太傳統。動動鼠標建立資源的方式成本過高,同時還有必定概率出錯的風險,這種方式已經不適合現代企業遷移基礎設施架構的方式。若是可以經過一種 IT 基礎設施架構自動化編排工具來管理維護IT資源豈不可以大大下降企業在基礎設施構建過程當中成本問題,同時也能夠提升雲基礎設施開發人員在 IAC(基礎設施即代碼) 方面的技能。html

  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 將負責爲您設置和配置這些資源。)bash

Terraform CLI 提供一種簡單機制,用於將配置文件部署到 Azure 並對其進行版本控制,使用 Terraform 基於模板的配置文件,可以以可重複、可預測的方式定義、預配和配置 Azure 資源。架構

在本系列博客文章中,我將詳細介紹有關使用Terraform以及爲Microsoft Azure基礎結構設置持續部署和測試的一些最佳實踐。app

  許可支持 模塊化 狀態管理 導入現有資源 可視化依賴 語言 驗證
免費、開源,來自 Hashicorp 和社區的支持 Terraform Registry中提供了一些可用於模塊化模板的功能介紹和使用示例。咱們能夠將這些獨立的模塊進行拼接,使得模塊之間可以創建聯繫。 默認狀況下,將狀態保存在本地,可是可使用遠程狀態功能將狀態保存在Terraform Cloud,Storage Account 能夠將現有資源導入terraform來管理 可使用terraform graph命令生成配置或執行計劃的直觀表示。 HCL是Terraform的配置語言,它是HashiCorp發明的一種聲明式語言 提供了檢查模板文件語法錯誤

二,正文

1,下載並安裝 Terraform

(1),使用chocolatey 安裝運維

 須要安裝Terraform,請使用 CMD 或者 PowerShell 中運行一下命令ide

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 

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

相關文章
相關標籤/搜索