上篇文章開始,咱們簡單介紹瞭如下經過基礎設施管理工具----- Terraform,經過它來統一管理複雜的雲基礎設施資源。做爲入門演示,使用Terraform 部署Azure 資源組的方式直觀的感覺到iac 工具帶來的強大便利。接下來,今天介紹 Terraform 語法詳解,從代碼的角度來理解Azure 各個資源模塊更好的理解若是部署資源。html
-------------------- Azure Terraform 系列 --------------------數據庫
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
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 生成執行計劃過程我就不在演示了)
terraform apply
執行計劃部署完成後,會在Terraform 項目文件夾中生成 「terraform.tfstate」 的文件和 「.terraform.tfstate.lock.info」的文件
terraform.tfstate:當前文件中包含了由於它包含有關已部署到Azure的內容的全部狀態信息
terraform.tfstate.lock.info:這個文件從名字上就能夠看出來,部署過程當中加鎖。這時候就有人疑惑了,爲何要加鎖 ?
緣由很簡單,就那操做數據庫來講,對同一數據的修改,或者刪除的時候,須要加鎖處理。這裏的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
版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。