【发布时间】:2021-07-22 11:51:30
【问题描述】:
我有一个关于 terraform 远程状态的问题。也许我使用的远程状态错误或有其他可能的解决方案:
在我的脚本中,我创建了一个数据库实例。创建的端点、端口等应保存在远程状态。数据库脚本外包在一个模块中。
我想重用端点和端口值并将它们传递给 docker 容器环境:
environment = [
{
name: "SPRING_DATASOURCE_URL",
value: "jdbc:postgresql://${data.terraform_remote_state.foo.outputs.db_endpoint}:${data.terraform_remote_state.foo.outputs.db_port}"
}
这些脚本也被外包到一个单独的模块中。
在每次第一次运行时,terraform 声明这些值不存在。因此,我必须排除环境值,运行terraform apply,毕竟创建后,我必须重新运行 terraform apply - 现在使用环境值。
是否有另一种可能(和更好的解决方案)将创建的 db 值传递给包含 docker 容器环境的服务和任务?
【问题讨论】:
-
顺便说一句,也许我的回答很匆忙,应该先回答这个问题,但是为什么要使用
terraform_remote_state?因为我假设terraform apply创建了terraform_remote_state引用的资源,所以我没有看到使用它的理由。不要忘记您可以在module中创建输出并通过module.alias.output_name引用它并将其传递给环境变量。无论如何,如果您能提供最少的可重现示例,那将会很有帮助 -
太棒了。谢谢你。不知道使用
module.前缀的可能性。有效。周末愉快 -
PS:更新你的答案,我会接受的
标签: terraform terraform-provider-aws