私の質問は、この git ハブの投稿に似ています。
https://github.com/hashicorp/terraform/issues/745
また、私の別のスタック交換投稿にも関連しています。
複数のインスタンスの IP アドレスを取得しようとすると、Terraform が停止しますか?
複数のサーバーをブートストラップしようとしていますが、他のすべてのインスタンスの IP アドレスを必要とするインスタンスで実行する必要があるコマンドがいくつかあります。ただし、新しく作成したインスタンスの IP アドレスを保持する変数には、それらが作成されるまでアクセスできません。したがって、次のprovisioner "remote-exec"
ようなブロックを実行しようとすると:
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y curl",
"echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}",
"echo ${openstack_compute_instance_v2.consul.1.network.1.fixed_ip_v4}",
"echo ${openstack_compute_instance_v2.consul.2.network.2.fixed_ip_v4}"
]
}
すべてのインスタンスが他のすべてのインスタンスの作成が完了するのを待っているため、何も起こらず、そもそも何も作成されません。そのため、リソースを作成し、リソースが作成された後にブロック コマンドを実行する方法が必要であり、provisioner "remote-exec"
terraform はすべてのインスタンスの IP アドレスにアクセスできます。