Terraform останавливается при попытке получить IP-адреса нескольких экземпляров?
Поэтому я использую terraform для предоставления экземпляров ec2 и openstack. Я пытаюсь сослаться на IP-адреса создаваемых мной экземпляров, потому что мне нужно запускать команды, которые их используют (для настройки консула). Однако после добавления ссылок на эти переменные terraform просто останавливается и ничего не делает после запускаterraform apply
или жеterraform plan
:
Вот пример блока ресурсов для того, что я пытаюсь запустить:
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}"
]
}
Итак, я обнаружил, что если вместо этого я использую только один из IP-адресов, то другие экземпляры даже не будут созданы, пока не будет создан мой первый экземпляр, как в блоке ниже:
provisioner "remote-exec" {
inline = [
"echo ${openstack_compute_instance_v2.consul.0.network.0.fixed_ip_v4}",
]
}
Мне нужно, чтобы все мои экземпляры были созданы одновременно и иметь доступ к IP-адресам всех остальных экземпляров, созданных сразу после их создания.