来自社区镜像的 Terraform Azure 虚拟机

问题描述 投票:0回答:1

我想从社区映像创建虚拟机,但在 https://registry.terraform.io/providers/hashicorp/azurerm

中找不到任何信息

任何人都可以分享有关如何从社区映像创建虚拟机的任何信息吗?

这是我到目前为止所尝试的,似乎没有任何效果。

variable "source_image_id_backbox" {
  default     = "westeurope/BackBox-39ccaf4b-e81f-4250-a8f4-e32bc23a8312/BackBox/versions/latest"
0225a84c1f4c/resourceGroups/AviatrixPlayground-Mgmt/providers/Microsoft.Compute/disks/pg-backbox_OsDisk_1_e19ed152086b4953807aea9a5d81cd94"
 source_image_id             = "/subscriptions/MY_SUBSCRIPTION/resourceGroups/myrg/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0"

}

resource "azurerm_network_interface" "azweu_backbox_crp_nic" {
  name                = "azweu-backbox-crp-nic"
  location            = azurerm_resource_group.servers.location
  resource_group_name = azurerm_resource_group.servers.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.servers_subnet_payload.id
    private_ip_address_allocation = "Dynamic"
  }
  tags = var.azweu_servers_tags
}

data "azurerm_image" "azweu-backbox-crp" {
  name                = "BackBox"
  location            = azurerm_resource_group.servers.location
  resource_group_name = azurerm_resource_group.servers.name
  
}


resource "azurerm_linux_virtual_machine" "azweu_backbox_crp_vm" {
  name                  = "azweu-backbox-crp"
  computer_name         = "azweu-backbox-crp"
  location              = azurerm_resource_group.servers.location
  resource_group_name   = azurerm_resource_group.servers.name
  zone                  = "1"
  network_interface_ids = [azurerm_network_interface.azweu_backbox_crp_nic.id]
  size                  = "Standard_D2lds_v5"
  admin_username        = "backbox"

  disable_password_authentication = true 
  admin_ssh_key {
    username   = "admin"
    public_key = servers_ssh_public_key
  }

  os_disk {
    name                 = "azweu-backbox-crp-os-disk"
    caching              = "ReadWrite"
    create_option        = "FromImage"
    storage_account_type = "Premium_LRS"
    disk_size_gb         = 100
  }
  source_image_id = var.source_image_id_backbox

  lifecycle {
    ignore_changes = [
      admin_ssh_key,
    ]
  }

  tags = var.azweu_servers_tags
}
azure terraform
1个回答
0
投票

来自图库图像的 Terraform Azure 虚拟机。

评论中提到的错误表明您提供的

source_image_id
的格式与 Azure 中社区图库图像 ID 的预期格式不匹配。 Azure 要求这些 ID 具有特定的格式,而您的 ID 似乎大小写不正确,并且可能缺少部分。

source_image_id = "/communityGalleries/backboxGallery/images/backboxImage"

要使用图库图像创建 VM,请尝试将安全类型设置为标准。

我尝试使用正确的语法从图库图像创建虚拟机的演示版本,并且能够成功配置要求。

我的地形配置:

provider "azurerm" {
  features {}
}

variable "subscription_id" {
  default = "Subscription_ID"
}

variable "admin_password" {
  default = "Password"
}

resource "azurerm_resource_group" "example" {
  name     = "sbvk-rg"
  location = "East US"
}

resource "azurerm_virtual_network" "example" {
  name                = "testvk-network"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
}

resource "azurerm_subnet" "example" {
  name                 = "internal-subnet"
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.2.0/24"]
}

resource "azurerm_network_interface" "example" {
  name                = "testvk-nic"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.example.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_linux_virtual_machine" "example" {
  name                = "testvk-vm"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  size                = "Standard_D2s_v3"
  network_interface_ids = [azurerm_network_interface.example.id]
  admin_username        = "Vinayadmin"
  admin_password        = "yourpassword" 
  disable_password_authentication = "false"

  os_disk {
    name                 = "testvmosdisk"
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_id = "/subscriptions/${var.subscription_id}/resourcegroups/vinay-rg/providers/Microsoft.Compute/galleries/testvkgallery/images/vkvmdef/versions/0.0.1"

}

部署成功:

enter image description here

enter image description here

参考:

部署可信启动虚拟机 - Azure 虚拟机 |微软学习

azurerm_linux_virtual_machine |资源 | Hashicorp/azurerm |地形 | Terraform 注册表

© www.soinside.com 2019 - 2024. All rights reserved.