当前位置:   article > 正文

Terraform:如何使用条件逻辑动态创建资源_terraform if

terraform if

Terraform之如何使用条件逻辑动态创建资源

背景

我们(可能)知道,Terraform不支持if语句。
幸运的是,我们可以通过使用名为count的特定参数来实现相同的结果。

我们可以这样考虑:可以将count设置为1,即获得该资源的一个副本。

但是,将相同的count参数设置为0将不会创建任何资源。

所以,正如前面提到的,你根本不需要if/else语句,terrform使用以下格式的条件表达式:

<CONDITION> ? <TRUE_VAL> <FALSE_VAL>
  • 1

Terraform所做的只是在CONDITION中计算布尔逻辑,基于此,如果值为true,它将返回TRUE_VAL; 否则,如果结果为false,它将返回FALSE_VAL

案例

例如,我们将在terrraform中迁移我们现有的AWS基础设施(之前基于Ansible&Boto3部署)。

这个示例是关于ELB创建的,其中包含一个target group和一个listener
取自我目前正在进行的一个迁移项目,它实际上将展示我刚才解释的内容:

resource "aws_lb_target_group" "tg" {
  count = var.target_group_addition ? 1 : 0
  name                 = "tg-${var.name}"
  port                 = var.tg_port
  protocol             = var.tg_protocol
  vpc_id               = var.vpc_id
  deregistration_delay = var.tg_deregistration_delay
  health_check {
    interval            = var.tg_healthcheck_interval
    path                = var.tg_healthcheck_path
    port                = "traffic-port"
    protocol            = var.tg_protocol
    timeout             = 5
    healthy_threshold   = 2
    unhealthy_threshold = 2
    matcher             = var.tg_healthcheck_success_code
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

正如你所看到的,只有当分配给var.target_group_add的布尔值设置为true(1)时,才会创建资源aws_lb_target_group

结论

这是在Terraform中处理if语句的一种非常简单的方法,并展示了如何在需要时使用terrraform中的count属性来进行动态资源配置。

REF:

https://medium.com/swlh/terraform-how-to-use-conditionals-for-dynamic-resources-creation-6a191e041857

关注公众号:“云原生SRE”

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/184886
推荐阅读
相关标签
  

闽ICP备14008679号