将 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 plan
或 terraform apply
时从 Consul 读取,因此它无法像 consul-template
那样自动对变化做出反应。
在 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 plan
或 terraform apply
时从 Consul 读取,因此它无法像 consul-template
那样自动对变化做出反应。