Skip to content

Commit 1ce9b77

Browse files
feat: support multiple disk per vm (#22)
1 parent 431d9e5 commit 1ce9b77

File tree

11 files changed

+58
-54
lines changed

11 files changed

+58
-54
lines changed

modules/vm/main.tf

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,25 @@ resource "proxmox_virtual_environment_vm" "vm" {
5454
scsi_hardware = "virtio-scsi-single"
5555

5656
# data disk
57-
disk {
58-
size = var.disk.size
59-
datastore_id = var.disk.storage
57+
dynamic "disk" {
58+
for_each = var.disks
59+
content {
60+
size = disk.value["size_gb"]
61+
datastore_id = disk.value["storage"]
6062

61-
file_format = "raw"
63+
file_format = "raw"
6264

63-
interface = "scsi0"
65+
interface = "scsi0"
6466

65-
iothread = true
66-
ssd = true
67-
discard = "on"
67+
iothread = true
68+
ssd = true
69+
discard = "on"
70+
}
6871
}
6972

7073
# efi disk
7174
efi_disk {
72-
datastore_id = var.disk.storage
75+
datastore_id = var.disks[0].storage
7376
type = "4m"
7477
}
7578

@@ -88,16 +91,16 @@ resource "proxmox_virtual_environment_vm" "vm" {
8891
dynamic "clone" {
8992
for_each = var.clone != null ? [var.clone] : []
9093
content {
91-
datastore_id = var.disk.storage
94+
datastore_id = var.disks[0].storage
9295
vm_id = clone.value
9396
}
9497
}
9598

9699
initialization {
97-
datastore_id = var.disk.storage
100+
datastore_id = var.disks[0].storage
98101

99102
# this is necessary when using machine type q35 or ovmf bios
100-
interface = "scsi1"
103+
interface = "scsi23"
101104

102105
user_account {
103106
password = random_password.default_root_password.result

modules/vm/variables.tf

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,16 @@ variable "memory" {
4545
description = "how much memory should be available to the VM"
4646
}
4747

48-
variable "disk" {
49-
type = object({
50-
size = string
48+
variable "disks" {
49+
type = list(object({
50+
size_gb = number
5151
storage = string
52-
})
53-
description = "the disk size and storage"
52+
}))
53+
description = "sizes and storage for all disks"
54+
validation {
55+
condition = length(var.disks) != 0
56+
error_message = "should have at least one disk configured"
57+
}
5458
}
5559

5660
variable "network" {
@@ -78,6 +82,10 @@ variable "admins" {
7882
username = string
7983
ssh_key = string
8084
}))
85+
validation {
86+
condition = length(var.admins) != 0
87+
error_message = "should have at least one admin configured"
88+
}
8189
}
8290

8391
variable "template" {

proxmox/100-home-assistant.tf

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ module "home_assistant_vm" {
99
cores = 4
1010
memory = 8192
1111

12-
disk = {
13-
// gigabytes
14-
size = 64
15-
storage = var.storage.disk
16-
}
12+
disks = [
13+
{
14+
size_gb = 64
15+
storage = var.storage.disk
16+
}
17+
]
1718

1819
network = {
1920
bridge = var.network.bridge

proxmox/101-docker.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "docker_vm" {
1111
cores = 4
1212
memory = 8192
1313

14-
disk = {
15-
// gigabytes
16-
size = 64
14+
disks = [{
15+
size_gb = 64
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/102-netboot.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "netboot_vm" {
1111
cores = 1
1212
memory = 2048
1313

14-
disk = {
15-
// gigabytes
16-
size = 48
14+
disks = [{
15+
size_gb = 48
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/103-kristall-miai-vm.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "kristall-miai_vm" {
1111
cores = 6
1212
memory = 36864
1313

14-
disk = {
15-
// gigabytes
16-
size = 15
14+
disks = [{
15+
size_gb = 15
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/104-cbtelbot.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "cbtelbot_vm" {
1111
cores = 1
1212
memory = 1024
1313

14-
disk = {
15-
// gigabytes
16-
size = 48
14+
disks = [{
15+
size_gb = 48
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/105-mecci.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "mecci_vm" {
1111
cores = 4
1212
memory = 8192
1313

14-
disk = {
15-
// gigabytes
16-
size = 64
14+
disks = [{
15+
size_gb = 64
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/106-streaming.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ module "streaming_vm" {
1111
cores = 2
1212
memory = 4096
1313

14-
disk = {
15-
// gigabytes
16-
size = 32
14+
disks = [{
15+
size_gb = 32
1716
storage = var.storage.disk
18-
}
17+
}]
1918

2019
network = {
2120
bridge = var.network.bridge

proxmox/107-ci-runners.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ module "ci_runners_vm" {
1212
memory = 4096
1313
weight = 128
1414

15-
disk = {
16-
// gigabytes
17-
size = 32
15+
disks = [{
16+
size_gb = 32
1817
storage = var.storage.disk
19-
}
18+
}]
2019

2120
network = {
2221
bridge = var.network.bridge

0 commit comments

Comments
 (0)