Когда в terraform определяются переменные?

Новичок в Terraform здесь. У меня есть модуль с variables.tf, который создает «папку» ресурсов в Google Cloud. Переменные определены как:

variable "folder_name" {
    type = "string"
    description = "Name of the folder"
}

Вызывающая функция этого модуля - main.tf.

module "folder" {
    source = "../<path>/"
}

Когда я запускаю 'terraform init', он выдает следующую ошибку:

$ terraform init
Initializing modules...
- module.folder
- module.project

Ошибка: модуль «папка»: отсутствует обязательный аргумент «имя_папки»

Я думал, что переменные могут быть предопределены в файле или включены в параметры командной строки при выполнении команды terraform apply. Я бы предпочел опции CLI, но тогда почему я вижу ошибку аргумента на этапе init?


person aplusp    schedule 02.05.2019    source источник


Ответы (1)


Вы указываете значение каждой переменной модуля при вызове самого модуля:

module "folder" {
    source = "../<path>/"
    folder_name = "xyz"  # add this line to define the folder_name variable
}

Если вы хотите вместо этого указать folder_name в командной строке, вы можете создать переменную в своем main.tf файле и вместо этого указать ее через командную строку:

variable "module_folder_name" {
  default = "xyz"
}

module "folder" {
   source = "../<path>/"
   folder_name = "${var.module_folder_name}"
}

А затем укажите значение этой переменной через командную строку:

terraform apply -var="module_folder_name=abc"
person Adil B    schedule 02.05.2019
comment
Это помогло мне понять. Спасибо! Судя по всему, мне пришлось создать переменные в вызывающем модуле main.tf и передавать значения оттуда в переменные модуля папки. - person aplusp; 03.05.2019
comment
Ага - вы поняли! :) - person Adil B; 03.05.2019