首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform:如何从YAML文件中将变量读入Terraform?还是像Hiera这样的数据库?

Terraform:如何从YAML文件中将变量读入Terraform?还是像Hiera这样的数据库?
EN

Stack Overflow用户
提问于 2017-10-09 19:13:13
回答 3查看 26.4K关注 0票数 7

我想从外部YAML文件或Hiera这样的数据库中将变量读入Terraform配置文件中,我如何做到这一点?例如:

代码语言:javascript
复制
provider "aws" {
    region = hiera('virginia')    # this should look up for virginia=us-east-1
}

resource "aws_instance" {
    ami = hiera('production') 
    ....
    ....
}

基本上,它类似于我们如何使用hiera或YAML文件来查找木偶清单/信任。

EN

回答 3

Stack Overflow用户

发布于 2019-08-28 03:13:02

yamldecode函数可以用来读取Yaml文件作为terraform的输入并解析它以供使用。

假设test.yml文件如下所示

代码语言:javascript
复制
a: 1
b: 2
c: 3

然后,下面的代码可以用来读取yaml文件

代码语言:javascript
复制
output "log" {
  value = "${yamldecode(file("test.yml"))}"
}

以解析从yaml文件中读取的特定值

代码语言:javascript
复制
output "log" {
  value = "${yamldecode(file("test.yml"))["a"]}"
}

重要:这可以在0.12或更高版本的terraform中获得,如果使用旧版本的terraform,并且仍然希望使用yaml文件,则使用terraform-提供者-yaml

票数 23
EN

Stack Overflow用户

发布于 2022-10-15 07:54:44

可以将yaml文件作为本地包括在内。

代码语言:javascript
复制
locals {
  config  = yamldecode(file("${path.module}/configfile.yml"))
}

现在您可以从local.config调用所有变量,例如,变量project_name

代码语言:javascript
复制
local.config.project_name 
票数 2
EN

Stack Overflow用户

发布于 2017-10-18 03:55:40

您必须将变量移动到terraform.tfvars或*.auto.tfvars文件中。

https://www.terraform.io/language/values/variables#variable-definitions-tfvars-files

若要持久化变量值,请在此文件中创建一个文件并分配变量。创建一个名为terraform.tfvars的文件,其内容如下: access_key = "foo“ secret_key = "bar“ 对于当前目录中所有与terraform.tfvars或*.auto.tfvars匹配的文件,Terraform会自动加载它们以填充变量。如果该文件名为其他文件,则可以直接使用-var-file标志来指定文件。这些文件的语法与Terraform配置文件相同。和Terraform配置文件一样,这些文件也可以是JSON。

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46653464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档