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
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"
}
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.