diff --git a/examples/templates/azure-linux/cloud-config.yaml.tftpl b/examples/templates/azure-linux/cloud-init/cloud-config.yaml.tftpl similarity index 100% rename from examples/templates/azure-linux/cloud-config.yaml.tftpl rename to examples/templates/azure-linux/cloud-init/cloud-config.yaml.tftpl diff --git a/examples/templates/azure-linux/main.tf b/examples/templates/azure-linux/main.tf index a7282bd76b31f..63f027687b433 100644 --- a/examples/templates/azure-linux/main.tf +++ b/examples/templates/azure-linux/main.tf @@ -6,6 +6,9 @@ terraform { azurerm = { source = "hashicorp/azurerm" } + cloudinit = { + source = "hashicorp/cloudinit" + } } } @@ -167,12 +170,24 @@ module "jetbrains_gateway" { locals { prefix = "coder-${data.coder_workspace_owner.me.name}-${data.coder_workspace.me.name}" +} + +data "cloudinit_config" "user_data" { + gzip = false + base64_encode = true - userdata = templatefile("cloud-config.yaml.tftpl", { - username = "coder" # Ensure this user/group does not exist in your VM image - init_script = base64encode(coder_agent.main.init_script) - hostname = lower(data.coder_workspace.me.name) - }) + boundary = "//" + + part { + filename = "cloud-config.yaml" + content_type = "text/cloud-config" + + content = templatefile("${path.module}/cloud-init/cloud-config.yaml.tftpl", { + username = "coder" # Ensure this user/group does not exist in your VM image + init_script = base64encode(coder_agent.main.init_script) + hostname = lower(data.coder_workspace.me.name) + }) + } } resource "azurerm_resource_group" "main" { @@ -275,7 +290,7 @@ resource "azurerm_linux_virtual_machine" "main" { sku = "20_04-lts-gen2" version = "latest" } - user_data = base64encode(local.userdata) + user_data = data.cloudinit_config.user_data.rendered tags = { Coder_Provisioned = "true"