main.extensions.tf (145 lines of code) (raw):
module "extension" {
source = "./modules/extension"
for_each = toset([for k, v in nonsensitive(var.extensions) : k if v.deploy_sequence >= 5]) #forcing to use the map key to address terraform limitation around sensitive values in the map (https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#limitations-on-values-used-in-for_each)
#using explicit references using the for_each key to get around the secrets issue in the above link
name = var.extensions[each.key].name
publisher = var.extensions[each.key].publisher
type = var.extensions[each.key].type
type_handler_version = var.extensions[each.key].type_handler_version
virtualmachine_resource_id = local.virtualmachine_resource_id
auto_upgrade_minor_version = var.extensions[each.key].auto_upgrade_minor_version
automatic_upgrade_enabled = var.extensions[each.key].automatic_upgrade_enabled
failure_suppression_enabled = var.extensions[each.key].failure_suppression_enabled
protected_settings = var.extensions[each.key].protected_settings
provision_after_extensions = var.extensions[each.key].provision_after_extensions
settings = var.extensions[each.key].settings
protected_settings_from_key_vault = var.extensions[each.key].protected_settings_from_key_vault
timeouts = {
create = coalesce(try(var.extensions[each.key].timeouts.create, null), var.timeouts.azurerm_virtual_machine_extension.create)
delete = coalesce(try(var.extensions[each.key].timeouts.delete, null), var.timeouts.azurerm_virtual_machine_extension.delete)
read = coalesce(try(var.extensions[each.key].timeouts.read, null), var.timeouts.azurerm_virtual_machine_extension.read)
update = coalesce(try(var.extensions[each.key].timeouts.update, null), var.timeouts.azurerm_virtual_machine_extension.update)
}
tags = var.extensions[each.key].tags != null && var.extensions[each.key].tags != {} ? var.extensions[each.key].tags : local.tags
depends_on = [
azurerm_virtual_machine_data_disk_attachment.this_linux,
azurerm_virtual_machine_data_disk_attachment.this_windows,
module.extension_1,
module.extension_2,
module.extension_3,
module.extension_4
]
}
module "extension_1" {
source = "./modules/extension"
for_each = toset([for k, v in nonsensitive(var.extensions) : k if v.deploy_sequence == 1]) #forcing to use the map key to address terraform limitation around sensitive values in the map (https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#limitations-on-values-used-in-for_each)
#using explicit references using the for_each key to get around the secrets issue in the above link
name = var.extensions[each.key].name
publisher = var.extensions[each.key].publisher
type = var.extensions[each.key].type
type_handler_version = var.extensions[each.key].type_handler_version
virtualmachine_resource_id = local.virtualmachine_resource_id
auto_upgrade_minor_version = var.extensions[each.key].auto_upgrade_minor_version
automatic_upgrade_enabled = var.extensions[each.key].automatic_upgrade_enabled
failure_suppression_enabled = var.extensions[each.key].failure_suppression_enabled
protected_settings = var.extensions[each.key].protected_settings
provision_after_extensions = var.extensions[each.key].provision_after_extensions
settings = var.extensions[each.key].settings
protected_settings_from_key_vault = var.extensions[each.key].protected_settings_from_key_vault
timeouts = {
create = coalesce(try(var.extensions[each.key].timeouts.create, null), var.timeouts.azurerm_virtual_machine_extension.create)
delete = coalesce(try(var.extensions[each.key].timeouts.delete, null), var.timeouts.azurerm_virtual_machine_extension.delete)
read = coalesce(try(var.extensions[each.key].timeouts.read, null), var.timeouts.azurerm_virtual_machine_extension.read)
update = coalesce(try(var.extensions[each.key].timeouts.update, null), var.timeouts.azurerm_virtual_machine_extension.update)
}
tags = var.extensions[each.key].tags != null && var.extensions[each.key].tags != {} ? var.extensions[each.key].tags : local.tags
depends_on = [
azurerm_virtual_machine_data_disk_attachment.this_linux,
azurerm_virtual_machine_data_disk_attachment.this_windows,
]
}
module "extension_2" {
source = "./modules/extension"
for_each = toset([for k, v in nonsensitive(var.extensions) : k if v.deploy_sequence == 2]) #forcing to use the map key to address terraform limitation around sensitive values in the map (https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#limitations-on-values-used-in-for_each)
#using explicit references using the for_each key to get around the secrets issue in the above link
name = var.extensions[each.key].name
publisher = var.extensions[each.key].publisher
type = var.extensions[each.key].type
type_handler_version = var.extensions[each.key].type_handler_version
virtualmachine_resource_id = local.virtualmachine_resource_id
auto_upgrade_minor_version = var.extensions[each.key].auto_upgrade_minor_version
automatic_upgrade_enabled = var.extensions[each.key].automatic_upgrade_enabled
failure_suppression_enabled = var.extensions[each.key].failure_suppression_enabled
protected_settings = var.extensions[each.key].protected_settings
provision_after_extensions = var.extensions[each.key].provision_after_extensions
settings = var.extensions[each.key].settings
protected_settings_from_key_vault = var.extensions[each.key].protected_settings_from_key_vault
timeouts = {
create = coalesce(try(var.extensions[each.key].timeouts.create, null), var.timeouts.azurerm_virtual_machine_extension.create)
delete = coalesce(try(var.extensions[each.key].timeouts.delete, null), var.timeouts.azurerm_virtual_machine_extension.delete)
read = coalesce(try(var.extensions[each.key].timeouts.read, null), var.timeouts.azurerm_virtual_machine_extension.read)
update = coalesce(try(var.extensions[each.key].timeouts.update, null), var.timeouts.azurerm_virtual_machine_extension.update)
}
tags = var.extensions[each.key].tags != null && var.extensions[each.key].tags != {} ? var.extensions[each.key].tags : local.tags
depends_on = [
azurerm_virtual_machine_data_disk_attachment.this_linux,
azurerm_virtual_machine_data_disk_attachment.this_windows,
module.extension_1
]
}
module "extension_3" {
source = "./modules/extension"
for_each = toset([for k, v in nonsensitive(var.extensions) : k if v.deploy_sequence == 3]) #forcing to use the map key to address terraform limitation around sensitive values in the map (https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#limitations-on-values-used-in-for_each)
#using explicit references using the for_each key to get around the secrets issue in the above link
name = var.extensions[each.key].name
publisher = var.extensions[each.key].publisher
type = var.extensions[each.key].type
type_handler_version = var.extensions[each.key].type_handler_version
virtualmachine_resource_id = local.virtualmachine_resource_id
auto_upgrade_minor_version = var.extensions[each.key].auto_upgrade_minor_version
automatic_upgrade_enabled = var.extensions[each.key].automatic_upgrade_enabled
failure_suppression_enabled = var.extensions[each.key].failure_suppression_enabled
protected_settings = var.extensions[each.key].protected_settings
provision_after_extensions = var.extensions[each.key].provision_after_extensions
settings = var.extensions[each.key].settings
protected_settings_from_key_vault = var.extensions[each.key].protected_settings_from_key_vault
timeouts = {
create = coalesce(try(var.extensions[each.key].timeouts.create, null), var.timeouts.azurerm_virtual_machine_extension.create)
delete = coalesce(try(var.extensions[each.key].timeouts.delete, null), var.timeouts.azurerm_virtual_machine_extension.delete)
read = coalesce(try(var.extensions[each.key].timeouts.read, null), var.timeouts.azurerm_virtual_machine_extension.read)
update = coalesce(try(var.extensions[each.key].timeouts.update, null), var.timeouts.azurerm_virtual_machine_extension.update)
}
tags = var.extensions[each.key].tags != null && var.extensions[each.key].tags != {} ? var.extensions[each.key].tags : local.tags
depends_on = [
azurerm_virtual_machine_data_disk_attachment.this_linux,
azurerm_virtual_machine_data_disk_attachment.this_windows,
module.extension_1,
module.extension_2
]
}
module "extension_4" {
source = "./modules/extension"
for_each = toset([for k, v in nonsensitive(var.extensions) : k if v.deploy_sequence == 4]) #forcing to use the map key to address terraform limitation around sensitive values in the map (https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#limitations-on-values-used-in-for_each)
#using explicit references using the for_each key to get around the secrets issue in the above link
name = var.extensions[each.key].name
publisher = var.extensions[each.key].publisher
type = var.extensions[each.key].type
type_handler_version = var.extensions[each.key].type_handler_version
virtualmachine_resource_id = local.virtualmachine_resource_id
auto_upgrade_minor_version = var.extensions[each.key].auto_upgrade_minor_version
automatic_upgrade_enabled = var.extensions[each.key].automatic_upgrade_enabled
failure_suppression_enabled = var.extensions[each.key].failure_suppression_enabled
protected_settings = var.extensions[each.key].protected_settings
provision_after_extensions = var.extensions[each.key].provision_after_extensions
settings = var.extensions[each.key].settings
protected_settings_from_key_vault = var.extensions[each.key].protected_settings_from_key_vault
timeouts = {
create = coalesce(try(var.extensions[each.key].timeouts.create, null), var.timeouts.azurerm_virtual_machine_extension.create)
delete = coalesce(try(var.extensions[each.key].timeouts.delete, null), var.timeouts.azurerm_virtual_machine_extension.delete)
read = coalesce(try(var.extensions[each.key].timeouts.read, null), var.timeouts.azurerm_virtual_machine_extension.read)
update = coalesce(try(var.extensions[each.key].timeouts.update, null), var.timeouts.azurerm_virtual_machine_extension.update)
}
tags = var.extensions[each.key].tags != null && var.extensions[each.key].tags != {} ? var.extensions[each.key].tags : local.tags
depends_on = [
azurerm_virtual_machine_data_disk_attachment.this_linux,
azurerm_virtual_machine_data_disk_attachment.this_windows,
module.extension_1,
module.extension_2,
module.extension_3
]
}