我使用 Terraform 在 AWS 中创建了两个实例(Instance-1
和Instance-2
)。我在Instance-1
的同一个脚本中安装了Ansible,我想将一个剧本从Instance-2
推送到Instance-1
。
我想指定安装Ansible的Instance-1
内的 Ansible Host 文件的公共IP,用户名和密钥路径。
如何获取Instance-2
的public-IP以在Ansible主机文件中指定上述属性?
答案 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"
}