关于后端:使用-Terraform-创建-Azure-虚拟机

38次阅读

共计 2386 个字符,预计需要花费 6 分钟才能阅读完成。

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

在 Azure 上创立虚拟机,我也从一开始的 Web 页面专项 CLI,再到当初因为须要简单配置时的 Terraform。这篇文章就分享下如何应用 Terraform 配置 Azure 虚拟机的创立。

Terraform 是一个基础设施即代码的软件工具。应用 Terraform 能够通过编写代码来形容基础设施(包含虚拟机、负载均衡器、数据库等云和本地资源)的冀望状态,平安灵便高效地构建、更改和版本化云和本地资源。

前置条件

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

  • Azure 账户
  • Terraform CLI
  • Azure CLI

认证

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

Terraform 的 Azure Provider 反对 5 种认证形式。因为我只在本地应用,故本文是通过 Azure CLI 的形式 进行认证。

执行上面的命令开启认证,认证之前需拜访 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": "mail@example.com",
    "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 地址等等。

关注 ” 云原生指北 ”
(转载本站文章请注明作者和出处盛世浮生,请勿用于任何商业用途)

正文完
 0