天天看點

Terraform 實踐後篇 - 使用Terraform部署雲資源

接下來我們就實際示範下terraform是怎麼部署資源的,以azure為例,我們首先需要準備azure cli,cli可以用來做身份驗證,terraform本身是沒有身份驗證功能的,如何判定我們是否有權限進行資源的部署/更改主要還是靠雲平台本身,是以我們需要首先驗證好我們的身份,然後才能進行雲資源的部署和變更。

azure cli可以使用service principle進行登入,我們首先可以先建立一個sp

$sp = new-azadserviceprincipal -scope /subscriptions/6dxxxxxxxxxxxxxxxxxx

Terraform 實踐後篇 - 使用Terraform部署雲資源

可以在application registration裡看到建立的sp

Terraform 實踐後篇 - 使用Terraform部署雲資源

然後可以針對這個sp進行授權,可以先給這個sp一個資源組的contributor權限或者subscription權限

接下來就可以在azure cli裡登入了,首先将登入環境指定為中國

az cloud set --name azurechinacloud

Terraform 實踐後篇 - 使用Terraform部署雲資源

az login

彈出浏覽器登入視窗,輸入密碼登陸

Terraform 實踐後篇 - 使用Terraform部署雲資源

雲環境已經準備完畢,接下來就可以編寫terraform代碼了,如果隻是簡單建立一台虛拟機,其實terraform代碼會很簡單,至于建立虛拟機時候需要指定的參數,比如虛拟機的名稱,size等等我們都可以定義成變量,這點和其他程式設計語言非常類似

terraform 0.13以上的版本需要按照以下方式先定義provider,required provider裡要先制定好要是用的provider版本,可以是一個固定的版本,也可以指定一個範圍

接下來就是資源的定義

locals裡定義的一般都是一些可重複使用的常量,在部署時不需要像變量一樣需要指派,而是可以直接拿來用

下邊開始就是azure資源的定義了,包括資源組,虛拟網絡,網卡等

定義好iac的代碼,首先我們先使用terraform init下載下傳需要的provider,可以看到正在下載下傳terraform azurerm provider

Terraform 實踐後篇 - 使用Terraform部署雲資源

下載下傳完成後,嘗試進行plan來看下部署時将要發生的變化,可以看到前邊有很多+,代表這些資源都是會被添加的,如果是destroy的話可能會看到很多-的标志,另外,terraform做資源的變更其實主要是看tfstate裡的狀态,我們因為是個空的state,是以建立任何資源都是會被判斷為新增,如果是一個已有的state的話,那就要先看看state裡都有啥了

Terraform 實踐後篇 - 使用Terraform部署雲資源

接下來直接apply進行建立,輸入yes進行确認

Terraform 實踐後篇 - 使用Terraform部署雲資源

    可以看到資源一直在建立,這個輸出界面感覺比arm template要友好不少

Terraform 實踐後篇 - 使用Terraform部署雲資源

部署完成後,登入portal,可以看到資源已經建立好了

Terraform 實踐後篇 - 使用Terraform部署雲資源

繼續閱讀