如何使用Terraform获取新启动的计算机的公共IP

时间:2017-12-07 06:06:41

标签: amazon-web-services ansible terraform

我使用 Terraform AWS 中创建了两个实例(Instance-1Instance-2)。我在Instance-1的同一个脚本中安装了Ansible,我想将一个剧本从Instance-2推送到Instance-1

我想指定安装Ansible的Instance-1内的 Ansible Host 文件的公共IP,用户名和密钥路径。

如何获取Instance-2的public-IP以在Ansible主机文件中指定上述属性?

2 个答案:

答案 0 :(得分:3)

如果您像我一样,将terraform和ansible作为更大的编排中的单独步骤运行,请使用terraform输出来保存您在ansible期间所需的IP地址。例如,我们使用terraform配置整个集群,仅允许来自堡垒主机的SSH。我使用以下命令来保存堡垒的IP地址(它位于弹性IP之后):

output "bastion.ip" {
  value = "${aws_eip.bastion.public_ip}"
}

然后在terraform apply之后检索它:

bash-4.3# terraform output bastion.ip
52.1.2.3

答案 1 :(得分:0)

您可以使用

通过terrraform获取已启动实例的public_ip

资源“aws_instance”“web”{

....

供应商“local-exec”{

command = "echo ${aws_instance.web.public_ip} >> /path/to/save"

}

https://www.terraform.io/docs/provisioners/local-exec.html