Azure Terraform(二)語法詳解

一,引言

  上篇文章開始,咱們簡單介紹瞭如下經過基礎設施管理工具----- Terraform,經過它來統一管理複雜的雲基礎設施資源。做爲入門演示,使用Terraform 部署Azure 資源組的方式直觀的感覺到iac 工具帶來的強大便利。接下來,今天介紹 Terraform 語法詳解,從代碼的角度來理解Azure 各個資源模塊更好的理解若是部署資源。html

-------------------- Azure Terraform 系列 --------------------數據庫

1,Azure Terraform(一)入門簡介

2,Azure Terraform(二)語法詳解

二,正文

1,Azure Providers

Terraform 做爲同一個能夠可擴展的工具,是經過 Provider 來支持新的基礎架構。Provider 是上游API的邏輯抽象。他們負責理解API交互並暴露資源。咱們能夠將 Provider 能夠理解爲各個雲廠商提供的與雲資源交互的後端驅動,不一樣的基礎設施提供商都須要提供一個Provider來實現對自家基礎設施的統一管理,例如咱們熟知的 Azure,AWS,GCP,Kubernetes,Aliyun等等。根據官方羅列的 官方 Providers 和驗證過的 Providers,超過了600多個。後端

你們能夠點擊此鏈接查看具體的 Terraform Providers :https://registry.terraform.io/browse/providersbash

那麼咱們想指定 Terraform Azure Provider 怎麼寫?架構

provider "azurerm" {
  version = "~>2.0"
  features {}
}

version ="~>2.0" ,表示咱們要使用 azure provider 的版本爲 >2.0app

features:表示自定義某些Azure提供程序資源的行爲,咱們目前使用的是 azure provider 的版本 2.x,若是使用的 azure provider 的版本爲 1.x,則不須要 featureside

terraform init 來驗證以上的解釋工具

(1)provider version > 2.0spa

(2)provider version = 1.33code

2,基本的Terraform 配置文件

resource "azurerm_resource_group" "example" {
  name = "Web_Test_TF_RG"
  location = "East Asia"
}

resource:表示咱們將建立類型爲 「azurerm_resource_group」 新的資源組

example:表示咱們爲當前新建立的資源組的 terraform module 起的名稱

當前新建立的資源組,咱們爲其定義了兩個參數,分別爲 「name」 和 「location」

name:表示爲當前即將建立的資源組的名稱爲 「Web_Test_TF_RG

location:表示當前資源組所在的位置爲 「East Asia

接下就是執行部署計劃的過程了 (plan 生成執行計劃過程我就不在演示了)

3,Terraform 狀態管理

terraform apply

執行計劃部署完成後,會在Terraform 項目文件夾中生成 「terraform.tfstate」 的文件和 「.terraform.tfstate.lock.info」的文件

 terraform.tfstate:當前文件中包含了由於它包含有關已部署到Azure的內容的全部狀態信息

terraform.tfstate.lock.info:這個文件從名字上就能夠看出來,部署過程當中加鎖。這時候就有人疑惑了,爲何要加鎖 ?

緣由很簡單,就那操做數據庫來講,對同一數據的修改,或者刪除的時候,須要加鎖處理。這裏的terraform 的狀態文件加鎖也是一樣的道理。

4,Terraform擴展知識點

其實咱們都知道,Azure 有好幾個版本,咱們通常經常使用的就是 Azure Global,Azure China,若是咱們在 Azure Provider 中不指定哪一個Azure 環境,Terraform 會默認認爲咱們是將雲資源部署在 Azure Global 上的。若是咱們用的是Azure China(世紀互聯版的Azure),那我就必須得在 Provider 中指定Azure 環境

environment 的值可能爲:

  (1)public(默認)

  (2)usgovernment

  (3)german

  (4)china

注意:若是不想在Provider 中指定雲環境,咱們能夠設置環境變量

setx ARM_ENVIRONMENT china

完整示例

provider "azurerm" {
  version = "~>2.0"
  environment = "china"
  features {}
}

ok,今天的分享就到此結束,今天也沒有介紹新的內容,基本上就是對昨天代碼的參數介紹,讓咱們可以更好的理解 Terraform 。

φ(゜▽゜*)♪是🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍!

三,結尾

參考資料:Terraform 官方Terraform 註冊表

做者:Allen 

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

相關文章
相關標籤/搜索