使用 Terraform 创建 Azure 虚拟机

使用 Terraform 创建 Azure 虚拟机

作者:张晓辉 2023-03-03 08:10:15

云计算

虚拟化 在 Azure 上创建虚拟机,我也从一开始的 Web 页面专项 CLI,再到现在因为需要复杂配置时的 Terraform。这篇文章就分享下如何使用 Terraform 配置 Azure 虚拟机的创建。

之前写过一篇 使用 Terraform 部署 Proxmox 虚拟机,那是一台 Core i7-8700 + 64G 的 Homelab 上搭建的虚拟机环境,这也是我一直以来的实验环境。直至去年加入微软 MVP 拿到了 Azure 的 credit,在需要资源较多或者拉取镜像频繁的情况下我也会选择使用 Azure 的虚拟机,尤其是最近经常在多集群的环境做测试。

在 Azure 上创建虚拟机,我也从一开始的 Web 页面专项 CLI,再到现在因为需要复杂配置时的 Terraform。这篇文章就分享下如何使用 Terraform 配置 Azure 虚拟机的创建。

Terraform[1] 是一个基础设施即代码的软件工具。使用 Terraform 可以通过编写代码来描述基础设施(包括虚拟机、负载均衡器、数据库等云和本地资源)的期望状态,安全灵活高效地构建、更改和版本化云和本地资源。

前置条件

在开始之前,确保已经具备如下条件:

  • Azure 账户
  • Terraform CLI[2]
  • Azure CLI[3]

认证

既然要做自动化,第一步就要解决认证的问题,毕竟每次都进行手工认证是不现实的,不符合懒人的特征。

Terraform 的 Azure Provider[4] 支持 5 种认证方式[5]。由于我只在本地使用,故本文是通过 Azure CLI 的方式[6] 进行认证。

执行下面的命令开启认证,认证之前需访问 https://portal.azure.com/#settings/directory 获取 tenant 信息。

az login --tenant  xxxx

执行命令后会自动跳转到浏览器,完成认证流程。

认证成功后,可通过命令查看账户信息。

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":"[email protected]",
"type":"user"
}
}

如果有多个订阅,需要设置当前账户使用的订阅。

az account set--subscription 00000000-0000-0000-0000-000000000000

代码

脚本已经提交在 GitHub 上,可以访问 https://github.com/addozhang/terraform-azure-sample 获取。

将代码克隆到本地。

git clone https://github.com/addozhang/terraform-azure-sample.git

脚本包含了两部分:

  • resource-group:Azure 上的所有资源都是在某个资源组下创建的,在创建虚拟机之前需要先创资源组,或使用已有的资源组。在创建资源组的同时,也会创建虚拟网络和子网。
  • virtual-machine:顾名思义,创建虚拟机资源。

创建资源组

进入到目录 resource-group 中,先执行下面的命令来初始化 Terraform 和下载 Azure provider。

terraform init

在 variables.tf 文件中定义了入参:资源组名和位置。执行下面的命令可以创建资源组,也可在创建时通过参数来指定名字和位置。

执行命令检查 Terraform 代码。

terraform validate

执行下面的命令来应用代码。

# 在 resource-group 目录中执行
terraform apply
# 或者
terraform apply -var "name=demo"-var "location=eastasia"

通过 terraform state list​ 查看创建的资源。或者通过 terrafor show 来查看资源的详细信息。

terraform state list

azurerm_resource_group.demo
azurerm_subnet.demo
azurerm_virtual_network.demo

创建虚拟机

进入到目录 virtual-machine 目录,依然是先运行命令进行初始化。

terraform init

创建虚拟机的参数就会多一些,具体参数定义可以查看 variables.tf​,通过 terraform.tfvars 文件可以设置参数值,这里 需要指定使用的订阅 ID。

执行代码和参数检查。

terraform validate

执行命令来创建虚拟机。

# 在 virtual-machine 目录中执行
terraform apply

比如将虚拟机的数量 vm_count​ 设置为 3,执行完上面的命令之后查看资源。

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 可以查看资源的详细信息,比如公网的 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 种认证方式: 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

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/228104.html<

(0)
管理的头像管理
上一篇2025-04-18 03:45
下一篇 2025-04-18 03:47

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注