javascript - 如何存储 Terraform 提供的新 IP 地址?
问题描述
我在 ec2 实例中使用 terraform 执行云配置,配置是自动化的,而一旦前端向后端发送请求,该过程就会开始。
在后端,我使用的是节点 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、集群设置等将需要对解决方案进行一些更改。
我可以建议 2 个选项供您探索。使用输出块
选项 1:使用 tf 输出
可能的解决方案是使用 terraform 输出 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 apply”步骤后使用
shell.exec('terraform output private_ip');
选项 2:
使用数据源“aws_instance”
https://www.terraform.io/docs/providers/aws/d/instance.html
您可以稍后随时使用它来使用标签/ID 过滤可用的 aws ec2 实例
这可能不是正确的答案,但会帮助您探索其他可能的选择。
推荐阅读
- javascript - 处理客户端错误并阻止它们在特定库的浏览器控制台中显示?
- html - 表格列旋转但如何定位旋转的单元格。
- macos - OSX 中 MKL BLAS 和 Accelerate Framework BLAS 之间的 DSCAL 不一致
- regex - 正则表达式:以特定单词开头并排除一组单词
- java - 使用 Junit 比较数组元素
- microsoft-graph-api - Microsoft Graph API:创建计划返回“MaximumPlannerPlans”异常
- twitter-bootstrap - Bootstrap 中的占位符颜色更改
- archlinux - 在 Arch linux 中运行 msfconsole 时出错
- java - 当我将 cookie 名称更改为自定义时,Wicket 出现错误
- automator - macOS Mojave,Automator “未授权将 Apple 事件发送到系统事件。”