“基礎設施即代碼”是一種通過代碼來定義計算和網絡基礎設施的方法,它可以應用於任何軟件系統中。這樣的代碼放在代碼版本控制系統中,具有可審查性、可重用性,並且符合測試慣例,還完全遵從持續交付的原則。該方法已經在過去的十年內廣泛應用於快速增長的雲計算平臺中了,而且也將會成爲接下來管理計算機基礎設施的主要方式。對於目前而言,我們若想使用基礎設施即代碼的方式在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:包含我們要創建資源的值
以下是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 plan來查看我們要在Azure訂閱中執行的操作。若我們的tf文件編寫有問題,也會在這一步的時候顯示出來:
接下來,我們需要運行terraform apply來執行部署:
部署過程中需要我們輸入yes來確認部署:
部署完成如下圖所示:
此時我們可以登陸到Azure查看對應的資源是否創建成功:
如果要刪除已經刪除的部署,可以運行terraform destroy:
幾分鐘後,所有內容均已被刪除: