Террафром | varible | ввод в bash скрипт - PullRequest
0 голосов
/ 26 марта 2020

У меня есть veraible в файлах varibles.tf в terraf из

locals {
deployment-type  = lower(var.env)

Я создаю экземпляр, который присоединится к кластеру ecs. Мне нужно ввести имя кластера в файл шаблона из TF Vars

 resource "aws_instance" "ec2-instance" {......
 user_data = "${data.template_file.user_data.rendered}"
  data "template_file" "user_data" {
 template = "${file("${path.module}/user_data.tpl")}"
}

Вот файл TPL. Мне нужно ввести имя кластера в этом файле из TF Vars


# Update all packages

sudo yum update -y
sudo yum install -y ecs-init
sudo service docker start
sudo start ecs
echo "${var.env}"
#Adding cluster name in ecs config
#echo "${var.source_dest_check}"= >> /etc/ecs/ecs.config
cat /etc/ecs/ecs.config | grep "ECS_CLUSTER"```
















1 Ответ

1 голос
/ 23 апреля 2020

Скорее всего, я думаю, что вы не должны использовать ${var.env} в шаблоне, а скорее ${env}.

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

Из моих собственных определений пользовательских данных, несколько сильно упрощенных примеров:

variable "product" {
  default = ""
}

data "template_file" "userdata" {
  template = file("${path.module}/userdata.sh")
  vars = {
    product             = var.product
  }
}

Из моего terraform.tfvars файла:

product = "radar"

Где-то в файле userdata.sh, который является шаблоном:

    "product": "${product}",

Шаблон, конечно, более сложный, чем этот. Я бы посоветовал начать с простого файла и проверить, что он получился таким, каким вы хотите, а затем использовать его. Как только вы увидите, как переменные проходят по цепочке так, как вы хотите, должно быть просто создать более сложный bootstrap.

...