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

Ebi*_*vis 4 amazon-web-services ansible terraform

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

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

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

dan*_*mer 6

如果您像我一样,在较大的业务流程中将terraform和ansible运行作为单独的步骤,请使用terraform输出节省ansible期间所需的IP地址。例如,我们为整个群集提供terraform,仅允许来自堡垒主机的SSH。我使用以下命令保存本营的IP地址(它位于弹性IP后面):

output "bastion.ip" {
  value = "${aws_eip.bastion.public_ip}"
}
Run Code Online (Sandbox Code Playgroud)

然后在获取之后terraform apply

bash-4.3# terraform output bastion.ip
52.1.2.3
Run Code Online (Sandbox Code Playgroud)


Ebi*_*vis 1

您可以通过 terraform 使用以下命令获取已启动实例的 public_ip:

资源“aws_instance”“网络”{

....

配置者“本地执行”{

command = "echo ${aws_instance.web.public_ip} >> /path/to/save"
Run Code Online (Sandbox Code Playgroud)

}

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