我想从外部YAML文件或像Hiera这样的数据库中将变量读入我的Terraform配置文件,我该怎么做?例如:
provider "aws" {
region = hiera('virginia') # this should look up for virginia=us-east-1
}
resource "aws_instance" {
ami = hiera('production')
....
....
}
基本上它类似于我们如何使用hiera或YAML文件查找Puppet清单/配置。
答案 0 :(得分:3)
yamldecode
函数可用于读取Yaml文件作为terraform的输入并对其进行解析以供使用。
让我们说如下的test.yml文件
a: 1
b: 2
c: 3
然后下面的代码可用于读取yaml文件
output "log" {
value = "${yamldecode(file("test.yml"))}"
}
如果解析特定值以从yaml文件读取
output "log" {
value = "${yamldecode(file("test.yml"))["a"}"
}
重要:在terraform的0.12或更高版本中可用,如果使用旧版本的terraform并仍要使用yaml文件,请使用terraform-provider-yaml
答案 1 :(得分:-2)
您必须将变量移动到terraform.tfvars或* .auto.tfvars文件。
https://www.terraform.io/intro/getting-started/variables.html#from-a-file
要保留变量值,请创建一个文件并在其中分配变量 这个文件。使用以下命令创建名为terraform.tfvars的文件 内容:
access_key =“foo”
secret_key =“bar”
对于匹配terraform.tfvars或* .auto.tfvars的所有文件 在当前目录中,Terraform会自动加载它们以进行填充 变量。如果文件名称为其他名称,则可以使用 -var-file标志直接指定文件。这些文件与Terraform配置文件的语法相同。和Terraform一样 配置文件,这些文件也可以是JSON。