[英]Difference between variables passed in terraform.Options for Terratest and terraform.tfvars?
我得到 terraform。Options 用于测试目的,但是当我的 Terratest 可以从 tfvars 文件中获取变量值时,它的目的是什么? 我怎样才能最大限度地利用它?
此外,我在 tfvars 中的大部分变量都是嵌套的。 我怎么会在terraform.Options中把map那个出来?
#variable in tfvars
resource_group = {
resource_group1 = {
rg_name = "Terratest1"
#resource group location
location = "us"
#tags
tags = {
foo = "foo"
bar = "bar"
}
}
resource_group2= {
rg_name = "Terratest2"
location = "us"
tags = {
foo = "foo"
bar = "bar"
}
}
}
#how would I map in terraform.Options?
terraformOptions := &terraform.Options{
// The path to where our Terraform code is located
TerraformDir: "../../examples/azure/terraform-azure-resourcegroup-example",
Vars: map[string]interface{}{
"postfix": uniquePostfix,
},
}
我得到 terraform。Options 用于测试目的,但是当我的 Terratest 可以从 tfvars 文件中获取变量值时,它的目的是什么?
测试的一个重要方面是改变输入,并根据这些输入验证行为和输出。 您可以使用terraform.Options
为模块提供各种输入,然后确定模块的行为和输出是否符合预期。 如果这是一个根模块配置,那么该值将大大减少。 如果这是一个可重用且经常声明的模块,那么它就有很大的价值。
我怎么会在terraform.Options中把map那个出来?
使用嵌套类型构造函数最容易:
terraformOptions := &terraform.Options{
// path to terraform module
TerraformDir: "../../examples/azure/terraform-azure-resourcegroup-example",
// map of input variables to module
Vars: map[string]interface{}{
"resource_group1": map[string]interface{}{
"rg_name": "Terratest1",
"location": "us",
"tags ": map[string]string{
"foo": "foo",
"bar": "bar",
},
},
"resource_group2": map[string]interface{}{
"rg_name": "Terratest2",
"location": "us",
"tags ": map[string]string{
"foo": "foo",
"bar": "bar",
},
},
},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.