将 Terraform "data consul_keys ..." 存储为文件?

Store Terraform "data consul_keys ..." as file?

在 base.tf 文件中我有:

data "consul_keys" "project_emails"{
  datacenter = "mine1"
  key {
    name = "notification_list"
    path = "project/notification_email_list"
  }
}

我想在我的 python 代码中使用这些 consul 变量。 我考虑的方式是将其输出到文件中。 (所以不仅仅是另一个使用 "${project_emails.notification_list.construct}" 版本 11 或 12 的 terraform 文件。)。

如何将所有这些密钥保存到文件中以访问密钥?

从 Terraform 配置导出数据的一般机制是 Output Values

您可以定义一个输出值,传递从 Consul 读取的值,如下所示:

output "project_emails" {
  value = data.consul_keys.project_emails.var.notification_list
}

在您 运行 terraform apply 执行配置中的操作后,您可以使用 the terraform output command 从根模块检索输出值。因为您想从另一个程序中读取它,所以您可能希望以 JSON 格式检索输出:

terraform output -json

您可以安排您的程序 运行 该命令本身,或者先将该命令的输出重定向到磁盘上的静态文件,然后让您的程序读取该文件。


以上假设您提到的 Python 代码将 运行 作为您在 运行 Terraform 所在的同一台计算机上的配置过程的一部分。相反,如果您询问有关从 Terraform 提供的虚拟机上的软件 运行ning 访问这些设置,您可以使用云平台提供的机制将用户数据传递到您的实例。详细信息因提供商而异。

对于使用来自 Consul 的数据的长期应用程序,更常见的解决方案是在您的虚拟服务器上 运行 consul-template 并让它直接访问 Consul。这种方法的一个优点是,如果 Consul 中的数据发生变化,那么 consul-template 可以识别并立即更新模板文件,必要时重新启动程序。 Terraform 只能在您 运行 terraform planterraform apply 时从 Consul 读取,因此它无法像 consul-template 那样自动对变化做出反应。