Terraform не может передать список в качестве переменной в bash Linux - PullRequest
1 голос
/ 04 июня 2019

Как часть моего конвейера CI / CD, я запускаю terraform и пытаюсь передать локальную переменную. К сожалению, имя переменной воспринимается буквально.

Я пытался изменить кавычки, но это, похоже, ничего не делает.

Я нахожусь на Linux Ubuntu и версии 0.11.14 terraform

Код bash

azip=1.1.1.1

Вызов команды плана по:

terraform plan  -var 'ip_azure=["$azip2"]'

Отображается следующий план:


Terraform will perform the following actions:

  + aws_route53_record.dns_azure
      id:                <computed>
      allow_overwrite:   <computed>
      fqdn:              <computed>
      name:              "dns_azure"
      records.#:         "1"
      records.767631455: "$azip2"
      ttl:               "60"
      type:              "A"
      zone_id:           "Z2X9DFDU4LXXC6"


Plan: 1 to add, 0 to change, 0 to destroy.

Я бы ожидал

records.767631455: "1.1.1.1"

Всякий раз, когда я помещаю IP-адрес непосредственно в план, например,

terraform plan  -var 'ip_azure=["1.1.1.1"]'

я получаю ожидаемый результат

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Спасибо @ bellackn за то, что дали мне правильное направление

Я запустил следующее

terraform plan  -var "ip_azure=[\"${azip2}\"]"

и это сработало. Похоже, мне нужно избежать двойных кавычек

0 голосов
/ 04 июня 2019

Переменные между одинарными кавычками не оцениваются в Bash. Если вы используете ...

terraform plan  -var "ip_azure=[${azip2}]"

... вместо этого должно работать. Возможно, вам даже не понадобится {} в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...