Skip to content

Commit 1f2737b

Browse files
committed
terraform/Azure: Enable selecting the disk performance tier
Allow kdevops users to select improved disk performance. https://learn.microsoft.com/en-us/azure/virtual-machines/disks-change-performance Signed-off-by: Chuck Lever <[email protected]>
1 parent 392ac18 commit 1f2737b

File tree

6 files changed

+78
-8
lines changed

6 files changed

+78
-8
lines changed

playbooks/roles/gen_tfvars/templates/azure/terraform.tfvars.j2

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ azure_image_sku = "{{ terraform_azure_image_sku }}"
77

88
azure_managed_disks_per_instance = {{ terraform_azure_managed_disks_per_instance }}
99
azure_managed_disks_size = {{ terraform_azure_managed_disks_size }}
10+
azure_managed_disks_tier = "{{ terraform_azure_managed_disks_tier }}"
1011

1112
ssh_config_pubkey_file = "{{ kdevops_terraform_ssh_config_pubkey_file }}"
1213
ssh_config_user = "{{ kdevops_terraform_ssh_config_user }}"

terraform/azure/kconfigs/Kconfig.storage

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,63 @@ config TERRAFORM_AZURE_MANAGED_DISKS_SIZE
153153
default 2048 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_2048G
154154
default 4096 if TERRAFORM_AZURE_MANAGED_DISKS_SIZE_4096G
155155

156+
choice
157+
prompt "Performance tier for each managed disk"
158+
default TERRAFORM_AZURE_MANAGED_DISKS_TIER_P20
159+
help
160+
The performance tier determines the maximum IOPS
161+
and throughput each managed disk can handle.
162+
163+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P1
164+
bool "P1"
165+
166+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P2
167+
bool "P2"
168+
169+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P3
170+
bool "P3"
171+
172+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P4
173+
bool "P4"
174+
175+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P6
176+
bool "P6"
177+
178+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P10
179+
bool "P10"
180+
181+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P15
182+
bool "P15"
183+
184+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P20
185+
bool "P20"
186+
187+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P30
188+
bool "P30"
189+
190+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P40
191+
bool "P40"
192+
193+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER_P50
194+
bool "P50"
195+
196+
endchoice
197+
198+
config TERRAFORM_AZURE_MANAGED_DISKS_TIER
199+
string
200+
output yaml
201+
default "P1" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P1
202+
default "P2" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P2
203+
default "P3" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P3
204+
default "P4" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P4
205+
default "P6" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P6
206+
default "P10" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P10
207+
default "P15" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P15
208+
default "P20" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P20
209+
default "P30" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P30
210+
default "P40" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P40
211+
default "P50" if TERRAFORM_AZURE_MANAGED_DISKS_TIER_P50
212+
156213
config TERRAFORM_AZURE_DATA_VOLUME_DEVICE_FILE_NAME
157214
string "Device name for the /data file system"
158215
default "/dev/disk/azure/scsi1/lun0"

terraform/azure/kdevops_managed_disks/main.tf

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
resource "azurerm_managed_disk" "kdevops_managed_disk" {
2-
count = var.md_disk_count
3-
4-
name = format("kdevops_%s_disk%02d", var.md_virtual_machine_name, count.index + 1)
5-
location = var.md_location
6-
resource_group_name = var.md_resource_group_name
7-
create_option = "Empty"
8-
storage_account_type = "Premium_LRS"
9-
disk_size_gb = var.md_disk_size
2+
count = var.md_disk_count
3+
create_option = "Empty"
4+
disk_size_gb = var.md_disk_size
5+
location = var.md_location
6+
name = format("kdevops_%s_disk%02d", var.md_virtual_machine_name, count.index + 1)
7+
public_network_access_enabled = false
8+
resource_group_name = var.md_resource_group_name
9+
storage_account_type = "Premium_LRS"
10+
tier = var.md_tier
1011
}
1112

1213
resource "azurerm_virtual_machine_data_disk_attachment" "kdevops_disk_attachment" {

terraform/azure/kdevops_managed_disks/vars.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ variable "md_resource_group_name" {
1818
description = "Azure resource group name"
1919
}
2020

21+
variable "md_tier" {
22+
type = string
23+
description = "Performance tier of managed disks"
24+
}
25+
2126
variable "md_virtual_machine_id" {
2227
type = string
2328
description = "Azure ID of the virtual machine to attach the disks to"

terraform/azure/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ module "kdevops_managed_disks" {
144144
md_disk_count = var.azure_managed_disks_per_instance
145145
md_location = var.azure_location
146146
md_resource_group_name = azurerm_resource_group.kdevops_group.name
147+
md_tier = var.azure_managed_disks_tier
147148
md_virtual_machine_id = element(azurerm_linux_virtual_machine.kdevops_vm.*.id, count.index)
148149
md_virtual_machine_name = element(azurerm_linux_virtual_machine.kdevops_vm.*.name, count.index)
149150
source = "./kdevops_managed_disks"

terraform/azure/vars.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ variable "azure_managed_disks_size" {
2828
type = number
2929
}
3030

31+
variable "azure_managed_disks_tier" {
32+
description = "Performance tier of managed disks"
33+
type = string
34+
}
35+
3136
variable "azure_subscription_id" {
3237
description = "Your Azure subscription ID"
3338
type = string

0 commit comments

Comments
 (0)