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



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

我想指定publicIP,用户名和关键路径, Ansible Host 在我安装Ansible的Instance-1中。

如何获取Instance-2的公共IP来指定Ansible主机文件中上述属性?

如果您像我一样,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

您可以使用Terrraform

来获取启动的实例的public_ip

资源" aws_instance"网络"{

....

provisioner" local-exec"{

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

}

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

最新更新