Estoy tratando de asignar una variable de salida de un módulo a una variable local para poder usar convenientemente una variable local. Hay otra manera ?
variable "vpc_id" { default = "${module.vpc.vpc_id}" }El error que estoy recibiendo es:
Error: Unsupported argument on main.tf line 22, in variable "subnetid_private": 22: default = "${module.vpc.subnet_private}" Variables may not be used here..Pasé una buena cantidad de tiempo buscando en Google pero no pude ver ningún ejemplo. Me estoy perdiendo de algo. Esta es una característica de conveniencia bastante estándar de cualquier idioma.
puedes reemplazar con locales
https://www.terraform.io/docs/configuration/locals.html
locals { vpc_id = module.vpc.vpc_id } y luego hacer referencia a él como local.vpc_id
Pensé lo mismo cuando comencé a usar Terraform.
El problema es nombrar. Un bloque de variables de Terraform es más como un constructor constante o final o un parámetro de método en otros lenguajes.
De la documentación de valor local , dice esto:
Un valor local asigna un nombre a una expresión, lo que permite que se use varias veces dentro de un módulo sin repetirlo.
Comparación de módulos con funciones en un lenguaje de programación tradicional: si las variables de entrada son análogas a los argumentos de la función y los valores de salida son análogos a los valores de retorno de la función, entonces los valores locales son comparables a los símbolos temporales locales de una función.
Cuando escribes:
variable "vpc_id" { }Terraform dice "ah, le gustaría que las personas que llamen a este módulo puedan entregar una cadena llamada vpc_id". Definitivamente no es lo que estás buscando.
Para el tipo de caso que tenga, un valor local es lo que proporciona Terraform:
locals { vpc_id = module.vpc.vpc_id }En terraform 0.12, puede usar variables en variables como esta:
variable "var1" { type = string default = "this is var 1" } variable "var2" { type = string default = "$${variable.var1}" }la salida de esto es:
$ terraform apply Apply complete! Resources: 0 added, 0 changed, 0 destroyed.