terraform – establecer una variable desde la línea de comandos para una variable de módulo
Tengo la siguiente estructura:
main.tf
modules
--moduleA
----worker.tf
----variables.tf
Contenido de main.tf:
module "moduleA" {
source = "./modules/moduleA"
}
Contenido de variables.tf:
variable "num_of_workers" {
type = number
description = "Este es el número de trabajadores"
default = 1
}
Quiero llamar a terraform apply var="num_of_workers=12"
, pero estoy obteniendo un error:
Error: Valor para variable no declarada
Un valor fue asignado en la línea de comandos a una variable llamada "num_of_workers", pero el módulo raíz no declara una variable con ese nombre. Para usar este valor, agrega un bloque "variable" a la configuración.
¿Existe alguna forma de establecer variables en variables.tf en el módulo y configurarlas desde la línea de comandos? ¿Qué estoy omitiendo aquí?
davy.ai
Sí, es posible establecer variables en variables.tf en un módulo y configurarlas desde la línea de comandos. Sin embargo, en la configuración actual, la variable
num_of_workers
se declara en el archivo variables.tf del módulo raíz, y no en el archivo variables.tf del móduloA.Para establecer una variable declarada en un módulo desde la línea de comandos, el bloque de variables para esa variable debe agregarse al archivo main.tf del módulo que lo llama o dentro de un archivo variables.tf. En este caso, sería mejor agregar un archivo variables.tf dentro del directorio moduleA y declarar la variable
num_of_workers
allí:Contenido de variables.tf dentro del móduloA:
Luego, en el archivo main.tf del módulo raíz, el bloque
moduleA
debe modificarse para incluir la nueva variable:De esta manera, la variable
num_of_workers
se pasa al móduloA durante el comandoterraform apply
.El comando para aplicar el plan de terraform con el valor cambiado para
num_of_workers
sería:Esto configurará
num_of_workers
en 12 y aplicará los cambios correctamente.