main.keys.tf (30 lines of code) (raw):
module "keys" {
source = "./modules/key"
for_each = var.keys
opts = each.value.key_opts
type = each.value.key_type
key_vault_resource_id = azurerm_key_vault.this.id
name = each.value.name
curve = each.value.curve
expiration_date = each.value.expiration_date
size = each.value.key_size
not_before_date = each.value.not_before_date
tags = each.value.tags
rotation_policy = each.value.rotation_policy
role_assignments = each.value.role_assignments
depends_on = [
azurerm_private_endpoint.this,
time_sleep.wait_for_rbac_before_key_operations
]
}
resource "time_sleep" "wait_for_rbac_before_key_operations" {
count = length(var.role_assignments) != 0 && length(var.keys) != 0 ? 1 : 0
create_duration = var.wait_for_rbac_before_key_operations.create
destroy_duration = var.wait_for_rbac_before_key_operations.destroy
triggers = {
role_assignments = jsonencode(var.role_assignments)
}
depends_on = [
azurerm_role_assignment.this
]
}