使用Terraform部署Azure資源

“基礎設施即代碼”是一種通過代碼來定義計算和網絡基礎設施的方法,它可以應用於任何軟件系統中。這樣的代碼放在代碼版本控制系統中,具有可審查性、可重用性,並且符合測試慣例,還完全遵從持續交付的原則。該方法已經在過去的十年內廣泛應用於快速增長的雲計算平臺中了,而且也將會成爲接下來管理計算機基礎設施的主要方式。對於目前而言,我們若想使用基礎設施即代碼的方式在Azure中部署資源,通常可以選擇如下工具:

  • PowerShell
  • Ansible
  • Puppet
  • Chef
  • Azure Resource Manager
  • Etc.

除了上述工具以外,我們還可以選擇使用Terraform來實現基礎設施及代碼的部署。那麼接下來我們會和大家討論如何使用Terraform從0開始在Azure上部署測試環境。本次我們主要討論使用Terraform部署一個資源組和一個帶有兩個子網的VNet

下載並安裝Terraform
若要使用Terraform實現IcA我們需要先下載並安裝Terraform,具體可以參考如下鏈接:
https://www.terraform.io/downloads.html

準備TF文件

安裝完Terraform以後,我們需要創建一些文件:

  • main.tf :包含我們要創建的資源以及一些模塊的調用
  • Variables.tf:包含我們要創建資源的值
    使用Terraform部署Azure資源

以下是main.tf,其中包含了一個資源組和一個帶有兩個子網的虛擬網絡:

provider "azurerm" {
    version = "2.0.0"
    features {}
}

resource "azurerm_resource_group" "rg" {
    name = var.resource_group_name
    location = var.location
}

resource "azurerm_virtual_network" "vnet" {
    name = var.virtual_network_name
    location = var.location
    resource_group_name = azurerm_resource_group.rg.name
    address_space = [element(var.address_space, 1)]
}

resource "azurerm_subnet" "infra" {
    name = var.subnetname_infra
    virtual_network_name = azurerm_virtual_network.vnet.name
    resource_group_name = azurerm_resource_group.rg.name
    address_prefix = var.subnet_prefix_infra
}

resource "azurerm_subnet" "infra_subnet" {
    name = var.subnet_name_DB
    virtual_network_name = azurerm_virtual_network.vnet.name
    resource_group_name = azurerm_resource_group.rg.name
    address_prefix = var.subnet_prefix_DB
}

該variables.tf文件將包含我們將部署的資源值:

variable "resource_group_name" {
    default = "TF-RG01"
}

variable "location" {
    default = "southeastasia"
}

variable  "virtual_network_name" {
    default = "Prod-VNet"
}

variable "address_space" {
    type = list(string)
    default = [
        "10.0.0.0/16"
    ]
}

variable "subnetname_infra" {
    default = "infra"
}

variable "subnet_name_DB" {
    default = "DB"
}

variable "subnet_prefix_infra" {
    default = "10.0.1.0/24"
}

variable "subnet_prefix_DB" {
    default = "10.0.2.0/24"
}

準備好上述文件以後,我們就應該開始執行部署命令了,首先我們會執行terraform init來初始化項目,這個過程中terraform會幫助我們下載對於的依賴項:
使用Terraform部署Azure資源

然後我們需要執行terraform plan來查看我們要在Azure訂閱中執行的操作。若我們的tf文件編寫有問題,也會在這一步的時候顯示出來:
使用Terraform部署Azure資源

接下來,我們需要運行terraform apply來執行部署:
使用Terraform部署Azure資源

部署過程中需要我們輸入yes來確認部署:
使用Terraform部署Azure資源

部署完成如下圖所示:
使用Terraform部署Azure資源

此時我們可以登陸到Azure查看對應的資源是否創建成功:
使用Terraform部署Azure資源

如果要刪除已經刪除的部署,可以運行terraform destroy:
使用Terraform部署Azure資源

幾分鐘後,所有內容均已被刪除:
使用Terraform部署Azure資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章