一,引言
上篇文章開始,我們簡單介紹了以下通過基礎設施管理工具----- Terraform,通過它來統一管理複雜的雲基礎設施資源。作為入門演示,使用Terraform 部署Azure 資源組的方式直觀的感受到iac 工具帶來的強大便利。接下來,今天介紹 Terraform 語法詳解,從程式碼的角度來理解Azure 各個資源模組更好的理解如果部署資源。
-------------------- 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/providers
那麼我們想指定 Terraform Azure Provider 怎麼寫?
provider "azurerm" { version = "~>2.0" features {} }
version ="~>2.0" ,表示我們要使用 azure provider 的版本為 >2.0
features:表示自定義某些Azure提供程式資源的行為,我們目前使用的是 azure provider 的版本 2.x,如果使用的 azure provider 的版本為 1.x,則不需要 features
terraform init 來驗證以上的解釋
(1)provider version > 2.0
(2)provider version = 1.33
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
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。