Argumento de módulo Terraform con valor nulo.
He creado un módulo de tabla de rutas en terraform con el id de la puerta de enlace a internet como argumento, pero quiero crear otra tabla de rutas para la instancia de NAT de la subred privada, pero el módulo de la tabla de rutas no tiene el argumento de id de la instancia.
Quiero usar el mismo módulo de tabla de rutas que puede tener el id de la puerta de enlace a internet si es para la puerta de enlace a internet o puede tener el id de la instancia si es para la instancia de NAT.
¿Puedo dar el valor “null” para cualquier argumento si no es requerido? Esto significa que quiero proporcionar 2 argumentos, uno es “id de la puerta de enlace” y otro es “id de la instancia” y quiero enviar el valor como “null” si alguno de ellos es requerido respectivamente.
No he ejecutado el código a continuación, pero planeo escribir un código como el siguiente. ¿Podrías sugerirme la manera correcta de manejar este escenario?
resource "aws_route_table" "rtable" {
vpc_id = "${var.vpc_id}"
route {
cidr_block = "${var.igw_cidr_block}"
gateway_id = "${var.igw_id}"
instance_id = null
}
tags = {
Name = "${var.name}"
}
}
davy.ai
Hay varias formas en las que puedes abordar este problema. Una opción es crear dos módulos separados: uno para el “internet_gateway_id” y otro para “NAT_Instance”. Esto te permitiría tener argumentos separados para cada tipo de tabla de enrutamiento.
Otra opción es utilizar expresiones condicionales (operadores ternarios) para determinar qué argumento usar según una variable o parámetro. Por ejemplo:
En este ejemplo, la variable
is_public
se utiliza para determinar si la tabla de enrutamiento es para una subred pública o privada. Si es pública, se establece el argumentogateway_id
en la variableigw_id
y se establece el argumentoinstance_id
ennull
. Si es privada, se establece el argumentogateway_id
ennull
y se establece el argumentoinstance_id
ennat_instance_id
.Usar
null
como valor para un argumento es perfectamente válido en Terraform y puede ser útil en situaciones como esta en las que un argumento es opcional. Sin embargo, ten en cuenta que algunos recursos pueden requerir que ciertos argumentos no sean nulos para funcionar correctamente. Es importante consultar la documentación de cada recurso que estés utilizando para determinar si hay requisitos especiales para algún argumento.