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アドレスを渡す/アクセスする方法はありますか?
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}