При назначении Elastic IP-адреса экземпляру, используя aws_eip
, любые операции, которые будут использовать выделенный Elastic IP-адрес, должны использовать aws_ip.ip.public_ip
вместо aws_instance.example.public_ip
, поскольку последний является обычным общедоступным IP-адресом, назначенным дляслучай, когда он начался, тогда как Elastic IP-адрес впоследствии назначается асинхронно.
В этом случае это будет означать перемещение поставщика в ресурс aws_ip
вместо:
resource "aws_eip" "ip" {
instance = "${aws_instance.example.id}"
provisioner "local-exec" {
command = "echo ${self.public_ip} >ip_address.txt"
}
}
Хотя, еслиВы записываете IP-адрес в файл для целей его использования в другом месте, может быть лучше экспортировать его как выходное значение вместо:
output "public_ip" {
value = "${aws_eip.ip.public_ip}"
}