我想获取Terraform在更新现有基础架构后创建的新实例的IP。
我有下一个资源实例:
resource "aws_instance" "masters" {
count = "${var.masters_count}"
ami = "${var.aws_centos_ami}"
instance_type = "t2.medium"
......
availability_zone = "eu-west-1b"
root_block_device {
delete_on_termination = "${var.volume_delete_on_termination}"
}
tags {
Name = "master-${count.index}"
}
}
如果我使用下一个“local-exec”命令,它会将所有主控实例IP写入文件:
provisioner "local-exec" {
command = "echo \"${join("\n", aws_instance.masters.*.private_ip)}\" >> ../ansible-provision/inventory/hosts.ini"
}
我使用5个实例部署此infraestructure。然后我想添加另外3个实例,所以我将“count”更改为8.
如何获取3个新实例的IP?
答案 0 :(得分:1)
解决方案:
因为我有一些运行的脚本并且不能使它们成为幂等的,所以它很容易使用ansible通过条件执行脚本在非幂等元素周围添加一些额外的“脚手架”,以便它们只运行一次。
https://groups.google.com/forum/#!topic/terraform-tool/YVHReDbJ2Gw
答案 1 :(得分:0)
使用null_resource
:
resource "null_resource" "ips" {
triggers {
ids = "${join(",", aws_instance.masters.*.id)}"
}
provisioner "local-exec" {
...
}
}