我想从外部 YAML 文件或像 Hiera 这样的数据库将变量读入我的 Terraform 配置文件,我该怎么做?例如:
provider "aws" {
region = hiera('virginia') # this should look up for virginia=us-east-1
}
resource "aws_instance" {
ami = hiera('production')
....
....
}
Run Code Online (Sandbox Code Playgroud)
基本上它类似于我们如何使用 hiera 或 YAML 文件查找 Puppet 清单/配置。
Mah*_*tam 13
yamldecode 函数可用于读取 Yaml 文件作为 terraform 的输入并解析它以使用。
假设 test.yml 文件如下
a: 1
b: 2
c: 3
Run Code Online (Sandbox Code Playgroud)
然后下面的代码可以用来读取yaml文件
output "log" {
value = "${yamldecode(file("test.yml"))}"
}
Run Code Online (Sandbox Code Playgroud)
为了解析从 yaml 文件中读取的特定值
output "log" {
value = "${yamldecode(file("test.yml"))["a"]}"
}
Run Code Online (Sandbox Code Playgroud)
重要提示:这在 terraform 0.12 或更高版本中可用,如果使用旧版本的 terraform 并且仍想使用 yaml 文件,则使用terraform-provider-yaml
您可以将 yaml 文件包含为本地文件:
locals {
config = yamldecode(file("${path.module}/configfile.yml"))
}
Run Code Online (Sandbox Code Playgroud)
现在您可以调用所有变量local.config,例如变量project_name:
local.config.project_name
Run Code Online (Sandbox Code Playgroud)
Ans*_*eek -7
您必须将变量移动到 terraform.tfvars 或 *.auto.tfvars 文件。
https://www.terraform.io/language/values/variables#variable-definitions-tfvars-files
要保留变量值,请创建一个文件并在该文件中分配变量。创建一个名为 terraform.tfvars 的文件,其中包含以下内容:
访问密钥=“foo”
Secret_key =“酒吧”
对于当前目录中存在的与 terraform.tfvars 或 *.auto.tfvars 匹配的所有文件,Terraform 会自动加载它们以填充变量。如果文件被命名为其他名称,则可以直接使用 -var-file 标志来指定文件。这些文件与 Terraform 配置文件的语法相同。与 Terraform 配置文件一样,这些文件也可以是 JSON。
| 归档时间: |
|
| 查看次数: |
13826 次 |
| 最近记录: |