web-dev-qa-db-ja.com

user_dataプロバイダーテンプレートファイル内のTerraform変数へのアクセス

Terraformを使用してaws_launch_configurationインスタンスを起動しています。

次のように、user_data変数にシェルスクリプトを使用しています。

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

このrouter-init.sh内で、私がやりたいことの1つは、terraformを介して起動している他のインスタンスのIPアドレスにアクセスできるようにすることです。

スプラットを使用して、そのインスタンスのすべてのIPアドレスにアクセスできることを知っています。たとえば、

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

Router-init.shスクリプト内でこれらのIPアドレスを渡す/アクセスする方法はありますか?

10
Timothy T.

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}
20
Brandon Miller