@@ -11,6 +11,9 @@ image_offer = "{{ terraform_azure_image_offer }}"
image_sku = "{{ terraform_azure_image_sku }}"
image_version = "{{ terraform_azure_image_version }}"
+managed_disks_per_instance = {{ terraform_azure_managed_disks_per_instance }}
+managed_disks_size = {{ terraform_azure_managed_disks_size }}
+
ssh_config_pubkey_file = "{{ kdevops_terraform_ssh_config_pubkey_file }}"
ssh_config_user = "{{ kdevops_terraform_ssh_config_user }}"
ssh_config = "{{ sshconfig }}"
@@ -155,7 +155,156 @@ config TERRAFORM_AZURE_APPLICATION_ID
help
The application ID to use.
+choice
+ prompt "Count of extra managed disks"
+ default TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_4
+ help
+ The count of managed disks attached to each target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_2
+ bool "2"
+ help
+ Provision 2 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_3
+ bool "3"
+ help
+ Provision 3 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_4
+ bool "4"
+ help
+ Provision 4 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_5
+ bool "5"
+ help
+ Provision 5 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_6
+ bool "6"
+ help
+ Provision 6 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_7
+ bool "7"
+ help
+ Provision 7 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_8
+ bool "8"
+ help
+ Provision 8 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_9
+ bool "9"
+ help
+ Provision 9 extra managed disks per target node.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_10
+ bool "10"
+ help
+ Provision 10 extra managed disks per target node.
+
+endchoice
+
+config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE
+ int
+ output yaml
+ default 2 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_2
+ default 3 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_3
+ default 4 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_4
+ default 5 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_5
+ default 6 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_6
+ default 7 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_7
+ default 8 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_8
+ default 9 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_9
+ default 10 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_10
+
+choice
+ prompt "Volume size for each additional volume"
+ default TERRAFORM_AZURE_MANAGED_DISKS_SIZE_64G
+ help
+ This option selects the size (in gibibytes) of managed
+ disks create for the target nodes.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_4G
+ bool "4G"
+ help
+ Managed disks are 4 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_8G
+ bool "8G"
+ help
+ Managed disks are 8 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_16G
+ bool "16G"
+ help
+ Managed disks are 16 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_32G
+ bool "32G"
+ help
+ Managed disks are 32 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_64G
+ bool "64G"
+ help
+ Managed disks are 64 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_128G
+ bool "128G"
+ help
+ Managed disks are 128 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_256G
+ bool "256G"
+ help
+ Managed disks are 256 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_512G
+ bool "512G"
+ help
+ Managed disks are 512 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_1024G
+ bool "1024G"
+ help
+ Managed disks are 1024 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_2048G
+ bool "2048G"
+ help
+ Managed disks are 2048 GiB in size.
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE_4096G
+ bool "4096G"
+ help
+ Managed disks are 4096 GiB in size.
+
+endchoice
+
+config TERRAFORM_AZURE_MANAGED_DISKS_SIZE
+ int
+ output yaml
+ default 4 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_4G
+ default 8 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_8G
+ default 16 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_16G
+ default 32 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_32G
+ default 64 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_64G
+ default 128 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_128G
+ default 256 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_256G
+ default 512 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_512G
+ default 1024 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_1024G
+ default 2048 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_2048G
+ default 4096 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_4096G
+
config TERRAFORM_AZURE_DATA_VOLUME_DEVICE_FILE_NAME
- string "/dev/sdc"
+ string "Device name for the /data file system"
+ default "/dev/sdc"
+ help
+ This option sets the name of the block device on each target
+ node that is to be used for the /data file system.
endif # TERRAFORM_AZURE
@@ -10,7 +10,7 @@ resource "azurerm_resource_group" "kdevops_group" {
}
locals {
- kdevops_private_net = format("%s/%d", var.private_net_prefix, var.private_net_mask)
+ kdevops_private_net = format("%s/%d", var.private_net_prefix, var.private_net_mask)
}
resource "azurerm_virtual_network" "kdevops_network" {
@@ -168,40 +168,14 @@ resource "azurerm_linux_virtual_machine" "kdevops_vm" {
}
}
-resource "azurerm_managed_disk" "kdevops_data_disk" {
- count = local.kdevops_num_boxes
- name = format("kdevops-data-disk-%02d", count.index + 1)
- location = var.resource_location
- resource_group_name = azurerm_resource_group.kdevops_group.name
- create_option = "Empty"
- storage_account_type = "Premium_LRS"
- disk_size_gb = 100
-}
+module "managed_disks" {
+ count = local.kdevops_num_boxes
+ source = "./managed_disks"
-resource "azurerm_virtual_machine_data_disk_attachment" "kdevops_data_disk" {
- count = local.kdevops_num_boxes
- managed_disk_id = azurerm_managed_disk.kdevops_data_disk[count.index].id
- virtual_machine_id = element(azurerm_linux_virtual_machine.kdevops_vm.*.id, count.index)
- caching = "None"
- write_accelerator_enabled = false
- lun = 0
-}
-
-resource "azurerm_managed_disk" "kdevops_scratch_disk" {
- count = local.kdevops_num_boxes
- name = format("kdevops-scratch-disk-%02d", count.index + 1)
- location = var.resource_location
- resource_group_name = azurerm_resource_group.kdevops_group.name
- create_option = "Empty"
- storage_account_type = "Premium_LRS"
- disk_size_gb = 100
-}
-
-resource "azurerm_virtual_machine_data_disk_attachment" "kdevops_scratch_disk" {
- count = local.kdevops_num_boxes
- managed_disk_id = azurerm_managed_disk.kdevops_scratch_disk[count.index].id
- virtual_machine_id = element(azurerm_linux_virtual_machine.kdevops_vm.*.id, count.index)
- caching = "None"
- write_accelerator_enabled = false
- lun = 1
+ md_disk_size = var.managed_disks_size
+ md_disk_count = var.managed_disks_per_instance
+ md_location = var.resource_location
+ md_resource_group_name = azurerm_resource_group.kdevops_group.name
+ md_virtual_machine_id = element(azurerm_linux_virtual_machine.kdevops_vm.*.id, count.index)
+ md_virtual_machine_name = element(azurerm_linux_virtual_machine.kdevops_vm.*.name, count.index)
}
new file mode 100644
@@ -0,0 +1,20 @@
+resource "azurerm_managed_disk" "kdevops_managed_disk" {
+ count = var.md_disk_count
+
+ name = format("kdevops_%s_disk%02d", var.md_virtual_machine_name, count.index + 1)
+ location = var.md_location
+ resource_group_name = var.md_resource_group_name
+ create_option = "Empty"
+ storage_account_type = "Premium_LRS"
+ disk_size_gb = var.md_disk_size
+}
+
+resource "azurerm_virtual_machine_data_disk_attachment" "kdevops_disk_attachment" {
+ count = var.md_disk_count
+
+ managed_disk_id = azurerm_managed_disk.kdevops_managed_disk[count.index].id
+ virtual_machine_id = var.md_virtual_machine_id
+ caching = "None"
+ write_accelerator_enabled = false
+ lun = count.index
+}
new file mode 100644
@@ -0,0 +1,29 @@
+variable "md_disk_count" {
+ type = number
+ description = "Count of managed disks to attach to the virtual machine"
+}
+
+variable "md_disk_size" {
+ type = number
+ description = "Size of each managed disk, in gibibytes"
+}
+
+variable "md_location" {
+ type = string
+ description = "Azure resource location"
+}
+
+variable "md_resource_group_name" {
+ type = string
+ description = "Azure resource group name"
+}
+
+variable "md_virtual_machine_id" {
+ type = string
+ description = "Azure ID of the virtual machine to attach the disks to"
+}
+
+variable "md_virtual_machine_name" {
+ type = string
+ description = "Name of the virtual machine to attach the disks to"
+}
@@ -59,3 +59,15 @@ variable "image_version" {
description = "Storage image version"
default = "latest"
}
+
+variable "managed_disks_per_instance" {
+ description = "Count of managed disks per VM instance"
+ type = number
+ default = 0
+}
+
+variable "managed_disks_size" {
+ description = "Size of each managed disk, in gibibytes"
+ type = number
+ default = 0
+}