私はterraformを使ってec2インスタンスとopenstackインスタンスをプロビジョニングしています。私はそれらを使用するコマンドを実行する必要があるため(作成するインスタンスのIPアドレスを参照しようとしています。しかし、これらの変数への参照を追加した後ちょうど屋台と私はterraform apply
またはterraform plan
を実行した後に絶対に何もしませんテラフォーム:複数のインスタンスのIPアドレスを取得しようとするとTerraformが停止しますか?
ここでは、私が実行しようとしています何のためのリソースブロックのサンプルです:
resource "aws_instance" "consul" {
count = 3
ami = "ami-ce5a9fa3"
instance_type = "t2.micro"
key_name = "ansible_aws"
tags {
Name = "consul"
}
connection {
user = "ubuntu"
private_key="${file("/home/ubuntu/.ssh/id_rsa")}"
agent = true
timeout = "3m"
}
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y curl",
"echo ${aws_instance.consul.0.private_ip} >> /home/ubuntu/test.txt",
"echo ${aws_instance.consul.1.private_ip} >> /home/ubuntu/test.txt",
"echo ${aws_instance.consul.2.private_ip} >> /home/ubuntu/test.txt"
]
}
}
更新:はので、私は私のOpenStackのクラウドと同様のコマンドを実行しようとしたと同じ問題を抱えて:代わりに、私は一つだけを使用している場合
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" {
inline = [
"echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}",
]
}
私はすべての私のインスタンスを同時に作成する必要があり、IPへのアクセス権を持っている:私の最初のインスタンスが作成されるまで、以下のブロックでのように、他のインスタンスが文句を言わないとしても、作成されたIPアドレスの作成されるとすぐに作成された他のすべてのインスタンスのアドレス。
あなたの望むものとまったく同じように見えます。どうしたの? – ydaetskcoR
これは問題ではありません。 'aws_instance.consul ...'部分は、 'consul'というaws_instance'リソースからの出力を得ることを言っています。 'count'を削除してecho $ {aws_instance.consul.private_ip} >>/home/ubuntu/test.txt'を1つだけ持つとどうなりますか?" – ydaetskcoR
私はopenstackクラウドと非常に似た何かをやろうとしましたが、同じ問題がありました。 'terraform apply'を実行した後、私の端末は何もしません。 5分の間何かをするのを待ってから、私はダブル 'control + c'をやめてエラーの壁を提示した。 –