Позволяет ли terraform переопределять переменные - PullRequest
0 голосов
/ 12 октября 2018

Предоставляет ли terraform такую ​​функциональность для переопределения значений переменных?Предположим, я объявил две переменные, указанные ниже.

variable "foo" {}
variable "bar" { default = "false"}

foo является обязательным и bar назначено со значением по умолчанию false .Есть ли в Terraform resoruce, в котором я могу переназначить или переопределить значение bar?Я спрашиваю об этом в resource перспективе.Я знаю, что могу сделать это, используя terraform-modules.

Я пробовал использовать это null_resource, но не получил ожидаемых результатов.Он по-прежнему возвращает значение по умолчанию.

resource "null_resource" "this" {
  provisioner "local-exec" {
    command = "echo ${var.env} > ${var.newvar}"
  }
}

Также я хотел запустить curl в атрибут команды .Нужно ли мне использовать `интерпретатор?если это так, то что будет его пустяком?

interpreter = ["shell","?"] какой набор значений я должен передать, чтобы выполнить команду curl в local-exec инициаторе.

сценарий bash

function check_efs() {
curl -ls https://elasticfilesystem.us-east-1.amazonsaws.com
if [ $? -eq 0 ]; then
        output=1
else:
        output=0
}

function produce_output() {
value=$(output)

jq -n \
    --arg is_efs_exist "$value" \
    '{"is_efs_exist":$is_efs_exist}'
}

check_efs
produce_output

1 Ответ

0 голосов
/ 12 октября 2018

[Отвечая на 1-й вопрос о переопределениях ...]

Есть несколько способов решить эту проблему.Я не знаю точного варианта использования, поэтому ваш пробег может варьироваться.

  1. Вы можете экспортировать переменную среды, которая имеет значение, которое вы хотели бы использовать.Например, вы можете установить bar var в новое значение с помощью export TF_VAR_bar=newvalue, а затем запустить terraform в этом сеансе.Или объедините их в одной строке: TF_VAR_bar=newvalue terraform apply

    Ссылка: https://www.terraform.io/docs/configuration/environment-variables.html

  2. Используйте файл переопределения.Например: override.tf может содержать variable "bar" { default = "newvalue"} или любой другой код TF.Он загружается последним.

    Ссылка: https://www.terraform.io/docs/configuration/override.html

  3. Поместите свой код в модуль TF, затем вы можете вызвать модуль и передать значение bar, которое вы 'мне нравитсяЭто особенно полезно, если вы продолжаете повторно использовать один и тот же код и хотите предоставлять разные экземпляры некоторого набора ресурсов с различными параметрами.

    Ссылка: https://www.terraform.io/docs/configuration/modules.html

HTH!

...