Skip to content

Commit b065bfd

Browse files
committed
Use azurerm_linux_virtual_machine and wait for attachment
Signed-off-by: Spike Curtis <spike@coder.com>
1 parent e1edc61 commit b065bfd

File tree

2 files changed

+27
-44
lines changed

2 files changed

+27
-44
lines changed

examples/templates/azure-linux/cloud-config.yaml.tftpl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
#cloud-config
22
cloud_final_modules:
33
- [scripts-user, always]
4+
bootcmd:
5+
# work around https://github.com/hashicorp/terraform-provider-azurerm/issues/6117
6+
- until [ -e /dev/disk/azure/scsi1/lun10 ]; do sleep 1; done
47
device_aliases:
5-
# this is a little fragile because the data volume isn't always sdc when the workspace is stopped
6-
# and started. But, it appears that it is always sdc when the workspace is *first* created.
7-
# This allows us to format and label the volume, and then we rely on the label to mount on
8-
# subsequent workspace builds.
9-
homedir: /dev/sdc
8+
homedir: /dev/disk/azure/scsi1/lun10
109
disk_setup:
1110
homedir:
1211
table_type: gpt

examples/templates/azure-linux/main.tf

Lines changed: 23 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ resource "azurerm_resource_group" "main" {
100100
location = var.location
101101

102102
tags = {
103-
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
104103
Coder_Provisioned = "true"
105104
}
106105
}
@@ -113,7 +112,6 @@ resource "azurerm_resource_group" "main" {
113112
# allocation_method = "Static"
114113
#
115114
# tags = {
116-
# Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
117115
# Coder_Provisioned = "true"
118116
# }
119117
#}
@@ -125,7 +123,6 @@ resource "azurerm_virtual_network" "main" {
125123
resource_group_name = azurerm_resource_group.main.name
126124

127125
tags = {
128-
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
129126
Coder_Provisioned = "true"
130127
}
131128
}
@@ -151,7 +148,6 @@ resource "azurerm_network_interface" "main" {
151148
}
152149

153150
tags = {
154-
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
155151
Coder_Provisioned = "true"
156152
}
157153
}
@@ -172,56 +168,44 @@ resource "tls_private_key" "dummy" {
172168
rsa_bits = 4096
173169
}
174170

175-
resource "azurerm_virtual_machine" "main" {
171+
resource "azurerm_linux_virtual_machine" "main" {
176172
count = data.coder_workspace.me.transition == "start" ? 1 : 0
177173
name = "vm"
178174
resource_group_name = azurerm_resource_group.main.name
179175
location = azurerm_resource_group.main.location
180-
vm_size = var.instance_type
176+
size = var.instance_type
177+
// cloud-init overwrites this, so the value here doesn't matter
178+
admin_username = "adminuser"
179+
admin_ssh_key {
180+
public_key = tls_private_key.dummy.public_key_openssh
181+
username = "adminuser"
182+
}
183+
181184
network_interface_ids = [
182185
azurerm_network_interface.main.id,
183186
]
184-
185-
os_profile {
186-
admin_username = "adminuser"
187-
computer_name = data.coder_workspace.me.name
188-
custom_data = local.userdata
189-
}
190-
191-
os_profile_linux_config {
192-
disable_password_authentication = true
193-
ssh_keys {
194-
key_data = tls_private_key.dummy.public_key_openssh
195-
path = "/home/adminuser/.ssh/authorized_keys"
196-
}
187+
computer_name = lower(data.coder_workspace.me.name)
188+
os_disk {
189+
caching = "ReadWrite"
190+
storage_account_type = "Standard_LRS"
197191
}
198-
199-
storage_image_reference {
192+
source_image_reference {
200193
publisher = "Canonical"
201194
offer = "0001-com-ubuntu-server-focal"
202195
sku = "20_04-lts-gen2"
203196
version = "latest"
204197
}
205-
206-
storage_os_disk {
207-
managed_disk_type = "StandardSSD_LRS"
208-
caching = "ReadWrite"
209-
create_option = "FromImage"
210-
name = "os"
211-
}
212-
delete_os_disk_on_termination = true
213-
214-
storage_data_disk {
215-
create_option = "Attach"
216-
lun = 10
217-
name = "home"
218-
caching = "ReadWrite"
219-
managed_disk_id = azurerm_managed_disk.home.id
220-
disk_size_gb = var.home_size
221-
}
198+
user_data = base64encode(local.userdata)
222199

223200
tags = {
224-
Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
225201
Coder_Provisioned = "true"
226202
}
227203
}
204+
205+
resource "azurerm_virtual_machine_data_disk_attachment" "home" {
206+
count = data.coder_workspace.me.transition == "start" ? 1 : 0
207+
managed_disk_id = azurerm_managed_disk.home.id
208+
virtual_machine_id = azurerm_linux_virtual_machine.main[0].id
209+
lun = "10"
210+
caching = "ReadWrite"
211+
}

0 commit comments

Comments
 (0)