繁体   English   中英

通过 Terraform 创建 Azure Windows VM

[英]Creating a Azure Windows VM through Terraform

在 Azure 中,我尝试使用 Terraform 创建 Windows VM。 我以前使用 Template.json 文件通过 Powershell 完成了此操作。 现在我必须处理 terraform,我对它完全陌生。 所以我搜索了一些在 Azure 中创建 VM 的示例脚本并找到了这个

在此链接中,有一个用于旋转 Linux VM 的示例 Terraform 脚本。 但是我需要从图像旋转 Windows VM。 我应该在哪里提供图像详细信息。 我的完整要求是:

  1. 从映像创建 Windows VM(具有资源 ID)
  2. 我已经创建了资源组、虚拟网络、子网。 我只需要传递这些值并创建它们。
  3. 我们已经从门户本身定义了子网地址前缀、Vnet 地址空间。 所以我必须在脚本中再次给出还是可以跳过它。
  4. 业务要求是没有虚拟机应该有公共 IP 和 DNS 名称,所以如果我删除“#Create public IPs”部分,那不会创建公共 IP 吗?

创建 Linux 机器的脚本在这里,我将其作为参考。

下面是如何使用数据使用 terraform 中现有资源的示例,还有一个代码块来创建 Windows VM。 您需要获取现有 VNET 并创建 NIC

使用 data 指令获取 VNET azurerm_virtual_network ,您可以看到以下资源组的语法。 您需要将资源组和可能的位置添加到此块中。

使用 VNET ID 创建azurerm_network_interface资源

将网络接口 ID 添加到 VM (network_interface_ids = [])

用于创建和负载平衡 VM 的示例 TF 代码

variable "subscription_id" {}
variable "client_id" {}
variable "client_secret" {}
variable "tenant_id" {}

provider "azurerm" {
  tenant_id       = "${var.tenant_id}"
  subscription_id = "${var.subscription_id}"
  client_id       = "${var.client_id}"
  client_secret   = "${var.client_secret}"
}

data "azurerm_resource_group" "resource_group" {
  name                = "learning-tf-web-rg"
}


resource "azurerm_virtual_machine" "web_server" {
  name                  = "server"
  location              = "westus2"
  resource_group_name   = "${data.azurerm_resource_group.resource_group.name}"
  network_interface_ids = []
  vm_size               = "Standard_B2s"

  storage_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter-Server-Core-smalldisk"
    version   = "latest"
  }

  storage_os_disk {
    name              = "server-os"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }

  os_profile {
    computer_name      = "server"
    admin_username     = "server"
    admin_password     = "Passw0rd1234"

  }

  os_profile_windows_config {
  }

}

从 Terraform 的角度来看,Windows VM 与 Linux VM 非常相似。 在我看来,#1 的区别是 Windows VM 需要os_profile_windows_config属性,而 Linux VM 需要os_profile_linux_config

您在 Microsoft 站点上找到的 TF 代码是一个好的开始。 此外,您可以查看Terraform Registry 例如,这里有一个 Linux VM 模块

我强烈建议通读VM 资源中的所有选项。 我知道很多,但你应该明白你有什么选择。

最后,没有什么可以替代编写一些代码并对其进行测试。 如果你做错了什么,Terraform 和/或 Azure API 会告诉你,如果不清楚,网络搜索会弹出一个答案或指向正确方向的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM