Terraform creating VM from managed disk image made in Packer

前端 未结 2 1841
遇见更好的自我
遇见更好的自我 2021-01-22 15:48

I have created a custom VM image using Packer, and now I am trying to create a new VM based on this image using Terraform, but I am confused on how I need to set up my .TF file

相关标签:
2条回答
  • 2021-01-22 16:10

    I have added the below code in the .TF file and it's working fine. Thank you for your help!

    storage_image_reference {
        id = "/subscriptions/33efe2dc-e7a0-4fb8-827d-8be939879420/resourceGroups/packerRG/providers/Microsoft.Compute/images/myPackerImage"
    }
    
    0 讨论(0)
  • 2021-01-22 16:11

    There is two ways to attach a managed disk to a VM.

    Either you remove the azure_managed_disk ressource and you specify the image reference in the azurerm_virtual_machine ressource. The managed disk will be automatically created and attached to the VM.

    resource "azurerm_virtual_machine" "PackerVm_TEST" {
    name =  "${var.hostname}"
    location = "northeurope"
    resource_group_name   = "${azurerm_resource_group.packer.name}"
    network_interface_ids = ["${azurerm_network_interface.packerNetInt_Test.id}"]
    vm_size = "Standard_D2s_v3"
    
    storage_os_disk {
        name            = "FromPackerImageOsDisk"
        managed_disk_type = "Standard_LRS"
        caching           = "ReadWrite"
        create_option     = "FromImage"
    }
    storage_image_reference {
        id = "/subscriptions/33efe2dc-e7a0-4fb8-827d-8be939879420/resourceGroups/packerRG/providers/Microsoft.Compute/images/myPackerImage"
    }
    
    os_profile {
        computer_name  = "PackerVmTEST"
        admin_username = "packermakeradmin1"
        admin_password = "RMKRTest123"
      }
    os_profile_windows_config {
        enable_automatic_upgrades = "true"
        provision_vm_agent ="true"
    }
    

    }

    Or you add the managed disk id in the azurerm_virtual_machine ressource.

    resource "azurerm_managed_disk" "managedDisk" {
      name                 = "managed_disk_test1"
      location             = "northeurope"
      resource_group_name  = "${azurerm_resource_group.packer.name}"
      storage_account_type = "Standard_LRS"
      create_option        = "FromImage"
      image_reference_id   = "/subscriptions/33efe2dc-e7a0-4fb8-827d-8be939879420/resourceGroups/packerRG/providers/Microsoft.Compute/images/myPackerImage"
      disk_size_gb         = "1"
    }
    
    resource "azurerm_virtual_machine" "PackerVm_TEST" {
        name =  "${var.hostname}"
        location = "northeurope"
        resource_group_name   = "${azurerm_resource_group.packer.name}"
        network_interface_ids = ["${azurerm_network_interface.packerNetInt_Test.id}"]
        vm_size = "Standard_D2s_v3"
    
        storage_os_disk {
            name            = "FromPackerImageOsDisk"
            managed_disk_id = "${azurerm_managed_disk.managedDisk.id}"
            managed_disk_type = "Standard_LRS"
            caching           = "ReadWrite"
            create_option     = "Attach"
        }
        os_profile {
            computer_name  = "PackerVmTEST"
            admin_username = "packermakeradmin1"
            admin_password = "RMKRTest123"
          }
        os_profile_windows_config {
            enable_automatic_upgrades = "true"
            provision_vm_agent ="true"
        }
    }
    

    From terraform documentation

    managed_disk_id - (Optional) Specifies an existing managed disk to use by id. Can only be used when create_option is Attach.

    0 讨论(0)
提交回复
热议问题