es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í?

Tags:  ,

Answer

  1. Avatar for 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:

    variable "num_of_workers" {
      type        = number
      description = "Esta es la cantidad de trabajadores para el móduloA"
      default     = 1
    }
    

    Luego, en el archivo main.tf del módulo raíz, el bloque moduleA debe modificarse para incluir la nueva variable:

    module "moduleA" {
      source = "./modules/moduleA"
      num_of_workers = var.num_of_workers
    }
    

    De esta manera, la variable num_of_workers se pasa al móduloA durante el comando terraform apply.

    El comando para aplicar el plan de terraform con el valor cambiado para num_of_workers sería:

    terraform apply -var="num_of_workers=12"
    

    Esto configurará num_of_workers en 12 y aplicará los cambios correctamente.

Comments are closed.