新聞中心
使用 Terraform 創(chuàng)建 Azure 虛擬機(jī)
作者:張曉輝 2023-03-03 08:10:15
云計(jì)算
虛擬化 在 Azure 上創(chuàng)建虛擬機(jī),我也從一開始的 Web 頁(yè)面專項(xiàng) CLI,再到現(xiàn)在因?yàn)樾枰獜?fù)雜配置時(shí)的 Terraform。這篇文章就分享下如何使用 Terraform 配置 Azure 虛擬機(jī)的創(chuàng)建。

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10年品質(zhì),值得信賴!
之前寫過一篇 使用 Terraform 部署 Proxmox 虛擬機(jī),那是一臺(tái) Core i7-8700 + 64G 的 Homelab 上搭建的虛擬機(jī)環(huán)境,這也是我一直以來的實(shí)驗(yàn)環(huán)境。直至去年加入微軟 MVP 拿到了 Azure 的 credit,在需要資源較多或者拉取鏡像頻繁的情況下我也會(huì)選擇使用 Azure 的虛擬機(jī),尤其是最近經(jīng)常在多集群的環(huán)境做測(cè)試。
在 Azure 上創(chuàng)建虛擬機(jī),我也從一開始的 Web 頁(yè)面專項(xiàng) CLI,再到現(xiàn)在因?yàn)樾枰獜?fù)雜配置時(shí)的 Terraform。這篇文章就分享下如何使用 Terraform 配置 Azure 虛擬機(jī)的創(chuàng)建。
Terraform[1] 是一個(gè)基礎(chǔ)設(shè)施即代碼的軟件工具。使用 Terraform 可以通過編寫代碼來描述基礎(chǔ)設(shè)施(包括虛擬機(jī)、負(fù)載均衡器、數(shù)據(jù)庫(kù)等云和本地資源)的期望狀態(tài),安全靈活高效地構(gòu)建、更改和版本化云和本地資源。
前置條件
在開始之前,確保已經(jīng)具備如下條件:
- Azure 賬戶
- Terraform CLI[2]
- Azure CLI[3]
認(rèn)證
既然要做自動(dòng)化,第一步就要解決認(rèn)證的問題,畢竟每次都進(jìn)行手工認(rèn)證是不現(xiàn)實(shí)的,不符合懶人的特征。
Terraform 的 Azure Provider[4] 支持 5 種認(rèn)證方式[5]。由于我只在本地使用,故本文是通過 Azure CLI 的方式[6] 進(jìn)行認(rèn)證。
執(zhí)行下面的命令開啟認(rèn)證,認(rèn)證之前需訪問 https://portal.azure.com/#settings/directory 獲取 tenant 信息。
az login --tenant xxxx
執(zhí)行命令后會(huì)自動(dòng)跳轉(zhuǎn)到瀏覽器,完成認(rèn)證流程。
認(rèn)證成功后,可通過命令查看賬戶信息。
az account show
{
"environmentName": "AzureCloud",
"homeTenantId": "00000000-0000-0000-0000-000000000000",
"id": "00000000-0000-0000-0000-000000000000",
"isDefault": true,
"managedByTenants": [],
"name": "Microsoft Azure 贊助",
"state": "Enabled",
"tenantId": "00000000-0000-0000-0000-000000000000",
"user": {
"name": "mail@cdxwcx.com",
"type": "user"
}
}
如果有多個(gè)訂閱,需要設(shè)置當(dāng)前賬戶使用的訂閱。
az account set --subscription 00000000-0000-0000-0000-000000000000
代碼
腳本已經(jīng)提交在 GitHub 上,可以訪問 https://github.com/addozhang/terraform-azure-sample 獲取。
將代碼克隆到本地。
git clone https://github.com/addozhang/terraform-azure-sample.git
腳本包含了兩部分:
- resource-group:Azure 上的所有資源都是在某個(gè)資源組下創(chuàng)建的,在創(chuàng)建虛擬機(jī)之前需要先創(chuàng)資源組,或使用已有的資源組。在創(chuàng)建資源組的同時(shí),也會(huì)創(chuàng)建虛擬網(wǎng)絡(luò)和子網(wǎng)。
- virtual-machine:顧名思義,創(chuàng)建虛擬機(jī)資源。
創(chuàng)建資源組
進(jìn)入到目錄 resource-group 中,先執(zhí)行下面的命令來初始化 Terraform 和下載 Azure provider。
terraform init
在 variables.tf 文件中定義了入?yún)ⅲ嘿Y源組名和位置。執(zhí)行下面的命令可以創(chuàng)建資源組,也可在創(chuàng)建時(shí)通過參數(shù)來指定名字和位置。
執(zhí)行命令檢查 Terraform 代碼。
terraform validate
執(zhí)行下面的命令來應(yīng)用代碼。
# 在 resource-group 目錄中執(zhí)行
terraform apply
# 或者
terraform apply -var "name=demo" -var "location=eastasia"
通過 terraform state list? 查看創(chuàng)建的資源?;蛘咄ㄟ^ terrafor show 來查看資源的詳細(xì)信息。
terraform state list
azurerm_resource_group.demo
azurerm_subnet.demo
azurerm_virtual_network.demo
創(chuàng)建虛擬機(jī)
進(jìn)入到目錄 virtual-machine 目錄,依然是先運(yùn)行命令進(jìn)行初始化。
terraform init
創(chuàng)建虛擬機(jī)的參數(shù)就會(huì)多一些,具體參數(shù)定義可以查看 variables.tf?,通過 terraform.tfvars 文件可以設(shè)置參數(shù)值,這里 需要指定使用的訂閱 ID。
執(zhí)行代碼和參數(shù)檢查。
terraform validate
執(zhí)行命令來創(chuàng)建虛擬機(jī)。
# 在 virtual-machine 目錄中執(zhí)行
terraform apply
比如將虛擬機(jī)的數(shù)量 vm_count? 設(shè)置為 3,執(zhí)行完上面的命令之后查看資源。
terraform state list
azurerm_linux_virtual_machine.demo[0]
azurerm_linux_virtual_machine.demo[1]
azurerm_linux_virtual_machine.demo[2]
azurerm_network_interface.demo[0]
azurerm_network_interface.demo[1]
azurerm_network_interface.demo[2]
azurerm_public_ip.demo[0]
azurerm_public_ip.demo[1]
azurerm_public_ip.demo[2]
通過命令 terraform show 可以查看資源的詳細(xì)信息,比如公網(wǎng)的 IP 地址等等。
參考資料
[1] Terraform: https://developer.hashicorp.com/terraform/intro
[2] Terraform CLI: https://developer.hashicorp.com/terraform/downloads
[3] Azure CLI: https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
[4] Azure Provider: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs
[5] 5 種認(rèn)證方式: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs#authenticating-to-azure
[6] Azure CLI 的方式: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/azure_cli
當(dāng)前文章:使用Terraform創(chuàng)建Azure虛擬機(jī)
文章路徑:http://www.dlmjj.cn/article/djcsegd.html


咨詢
建站咨詢
