I am creating an Availability Set for VMs for azure with terraform , when i execute the code with Ubuntu 22 (and with Ubuntu 18) the azurerm_virtual_machine_extension module works fine.
Terraform code:
...
# Define Linux virtual machines
resource "azurerm_linux_virtual_machine" "test" {
count = 3
name = "acctvm${count.index}"
location = azurerm_resource_group.test.location
availability_set_id = azurerm_availability_set.avset.id
resource_group_name = azurerm_resource_group.test.name
network_interface_ids = [element(azurerm_network_interface.test.*.id, count.index)]
size = "Standard_B1s"
admin_username = "testadmin"
admin_password = "Password1234!"
disable_password_authentication = false
# Define the OS disk configuration
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
# Specify the source image for the virtual machine
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts-gen2"
version = "latest"
}
}
# Configure custom extensions for VMs
resource "azurerm_virtual_machine_extension" "web_server_install" {
count = 3
name = "webserver_extension_${count.index}"
virtual_machine_id = azurerm_linux_virtual_machine.test[count.index].id
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.1"
auto_upgrade_minor_version = "true"
# Define settings for the custom script extension
settings = <<SETTINGS
{
"commandToExecute": "sudo apt update && sudo apt-get install nginx -y && sudo apt-get install jq -y"
}
SETTINGS
# Set timeouts for extension creation and deletion
timeouts {
create = "3m"
delete = "3m"
}
}
...
Output:
...
azurerm_linux_virtual_machine.test[0]: Still creating... [50s elapsed]
azurerm_linux_virtual_machine.test[1]: Still creating... [50s elapsed]
azurerm_linux_virtual_machine.test[2]: Still creating... [50s elapsed]
azurerm_linux_virtual_machine.test[0]: Creation complete after 55s
azurerm_linux_virtual_machine.test[1]: Creation complete after 55s
azurerm_linux_virtual_machine.test[2]: Creation complete after 55s
azurerm_virtual_machine_extension.web_server_install[2]: Creating...
azurerm_virtual_machine_extension.web_server_install[1]: Creating...
azurerm_virtual_machine_extension.web_server_install[0]: Creating...
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [10s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [10s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [10s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [20s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [20s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [20s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [30s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [30s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [30s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [40s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [40s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [40s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [50s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [50s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [50s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [1m0s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [1m0s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [1m0s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [1m10s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [1m10s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [1m10s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [1m20s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [1m20s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [1m20s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [1m30s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [1m30s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [1m30s elapsed]
azurerm_virtual_machine_extension.web_server_install[0]: Still creating... [1m40s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [1m40s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [1m40s elapsed]
azurerm_virtual_machine_extension.web_server_install[2]: Creation complete after 1m41s
azurerm_virtual_machine_extension.web_server_install[1]: Creation complete after 1m41s
azurerm_virtual_machine_extension.web_server_install[0]: Creation complete after 1m41s
...
But when I change the source_image_reference to Debian:
...
source_image_reference {
publisher = "Debian"
offer = "debian-11"
sku = "11"
version = "latest"
}
...
The azurerm_virtual_machine_extension never gets installed:
azurerm_virtual_machine_extension.web_server_install[2]: Still creating... [3m0s elapsed]
azurerm_virtual_machine_extension.web_server_install[1]: Still creating... [3m0s elapsed]
╷
│ Error: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded
│
│ with azurerm_virtual_machine_extension.web_server_install[1],
│ on main.tf line 187, in resource "azurerm_virtual_machine_extension" "web_server_install":
│ 187: resource "azurerm_virtual_machine_extension" "web_server_install" {
│
╵
╷
│ Error: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded
│
│ with azurerm_virtual_machine_extension.web_server_install[2],
│ on main.tf line 187, in resource "azurerm_virtual_machine_extension" "web_server_install":
│ 187: resource "azurerm_virtual_machine_extension" "web_server_install" {
│
╵
╷
│ Error: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded
│
│ with azurerm_virtual_machine_extension.web_server_install[0],
│ on main.tf line 187, in resource "azurerm_virtual_machine_extension" "web_server_install":
│ 187: resource "azurerm_virtual_machine_extension" "web_server_install" {
│
I tried to create the virtual machine with all possible skus for Debian 11, also tried with Debian 10, nothing worked.
Say that if I change the timeout from 3 minutes to 30 minutes, it takes 30 minutes without doing anything.
Finally, emphasize that I tried to create the extension by hand through the Azure Portal and it also stays infinitely trying to create itself.
I have read that Azure has some errors regarding the vm extensions, I don't know if it has something to do with it or is that I am missing something with the code, whatever it is, thanks in advance.