Доступ к переменным Terraform в файле шаблона поставщика user_data

Я запускаю экземпляр aws_launch_configuration используя terraform.

Я использую скрипт оболочки для переменной user_data, например:

resource "aws_launch_configuration" "launch_config" {
    ...
     user_data                     = "${file("router-init.sh")}"
    ....  
}

Внутри этого router-init.sh одна из вещей, которые я хотел бы сделать, - иметь доступ к ip-адресам для других экземпляров, которые я запускаю через terraform.

Я знаю, что я могу использовать splat для доступа ко всем IP-адресам этого экземпляра, например:

output ip_address {
    value = ${aws_instance.myAWSInstance.*.private_ip}"
}

Есть ли способ передать/получить доступ к этим IP-адресам в скрипте router-init.sh?

Ответ 1

Вы можете сделать это, используя template_file источник данных:

data "template_file" "init" {
  template = "${file("router-init.sh.tpl")}"

  vars = {
    some_address = "${aws_instance.some.private_ip}"
  }
}

Затем назовите его внутри шаблона, например:

#!/bin/bash

echo "SOME_ADDRESS = ${some_address}" > /tmp/

Затем используйте это для user_data:

 user_data = ${data.template_file.init.rendered}

Ответ 2

Получение "Ошибка: Цикл: aws_instance.some, data.template_file.init" здесь... есть ли способ заставить это работать на