将Terraform“ data consul_keys…”存储为文件吗?

问题描述 投票:0回答:1

在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 consul
1个回答
2
投票

从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

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


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

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

© www.soinside.com 2019 - 2024. All rights reserved.