Crear un recurso dinámico de Terraform.
Todos los ejemplos de terraform que he encontrado para for_each y dynamic están anidados dentro de un recurso. Quiero crear una lista dinámica de recursos a partir de una variable de entrada de tipo ‘set’.
Por ejemplo, ‘azurerm_mssql_firewall_rule’ es un recurso discreto, por lo que para tener varias reglas de firewall, necesitaría algo como lo siguiente:
Módulo principal:
module "AzureSqlServer" {
allowedIPs = local.azureSqlAllowedIPs
}
variable "azureSQLAllowedIPs" {
type = map(object({
name = string
ipAddress = string
}))
}
Módulo hijo:
resource "azurerm_mssql_firewall_rule" "azureSQLFirewall"{
for_each var.azureSQLAllowedIPs
name = each.value["name"]
server_id = azurerm_mssql_server.azureSqlServer.id
start_ip_address = each.value["ipAddress"]
end_ip_address = each.value["ipAddress"]
}
¿Existe alguna forma de utilizar ‘dynamic’ fuera del bloque?
davy.ai
Sí, puede usar el bloque dinámico fuera de un bloque de recurso para crear múltiples recursos con variables de entrada dinámicas. Aquí hay un ejemplo:
En este ejemplo, se utiliza el bloque dinámico para generar múltiples instancias del recurso azurerm_mssql_firewall_rule basado en las variables de entrada del módulo. El argumento for_each se utiliza para iterar sobre el conjunto de direcciones IP permitidas, y el bloque content define las propiedades de cada regla de firewall basada en las variables de entrada. Tenga en cuenta que la variable module.AzureSqlServer.azure_sql_server_id se utiliza para hacer referencia al recurso principal en este ejemplo.