如何存储Terraform提供的新ip地址



我在ec2实例中使用terraform执行云供应,供应是自动化的,而一旦前端向后端发送请求,流程就会启动。

在后端,我使用的是node js,我使用shell脚本并调用terraform 的命令

shell.exec('terraform init');
shell.exec('terraform plan -auto-approve');
shell.exec('terraform apply -auto-approve');

在这之后,云供应发生了,但如何将新实例IP存储在我的后端某处?比方说在MySQL中?

项目文件夹结构如下:

Backend
|...
|
|-src
|    |_-index.js
|
|-terraform
|          |_main.tf
|

所以,我只是在寻找一种方法,可以将新实例Ip从terraform返回到节点js?

如果我正确理解你的问题,你需要在nodejs根据shell脚本完成最后一步后提供新EC2实例的IP地址。您的体系结构中缺少一些必需的部分,解决方案可能会根据这些部分进行更改,连接ASG、公共IP、集群设置等都需要对解决方案进行一些更改。

我可以建议你探索两个选项。使用输出块到

选项1:使用tf输出

可能的解决方案是使用地形输出https://www.terraform.io/docs/commands/output.html

resource "aws_instance" "web" {
ami           = "${data.aws_ami.ubuntu.id}"
instance_type = "t2.micro"
tags = {
Name = "HelloWorld"
}
}
output "private_ip" { value = "${aws_instance.web.private_ip}" }

这将导出EC2实例的ip地址,并且可以在完成";tf应用";使用的步骤

shell.exec('terraform output private_ip');

选项2:

使用数据源";aws_instance">

https://www.terraform.io/docs/providers/aws/d/instance.html

您可以在以后的任何时候使用它来使用标签/ids 过滤可用的aws ec2实例

这可能不是正确的答案,但会帮助你探索其他可能的选择。

相关内容

  • 没有找到相关文章

最新更新