如何在Terraform中实现动态匹配?

时间:2019-01-15 12:16:22

标签: terraform terraform-provider-aws

如何用terraform编写if语句,以根据将在变量中指定的环境,以不同的值运行以下块。

root_block_device {
    volume_type = "gp2"
    volume_size = "30"
  }

  ebs_block_device = {
    device_name = "dfgh"
    volume_type = "gp2"
    volume_size = "5"
    encrypted = true
  }

例如,如果我想让volume_size参数对于测试环境为30,对于生产环境为50?

1 个答案:

答案 0 :(得分:1)

您不能真正在Terraform中使用if语句,因为它是一种声明性语言。

但是,有一种变通方法可以实现您想要的目标。

$count = pattern('\[tag]\b', 'i')->match('[tag] [tag]')->count();

$count // 2

然后可以通过将... root_block_device { volume_type = "gp2" volume_size = "${lookup(var.volume_sizes, var.env)}" } ... variable "env" { default = "test" } variable "volume_sizes" { default = { "test" = "30" "production" = "50" } } 变量从env修改为test来更改卷大小值。