首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您能否将块作为Terraform中的变量传递,引用资源嵌套块内容的类型?

您能否将块作为Terraform中的变量传递,引用资源嵌套块内容的类型?
EN

Stack Overflow用户
提问于 2021-12-16 16:40:17
回答 1查看 3.4K关注 0票数 6

我试图在Terraform中构建一个Web资源https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_web_acl

这个资源有嵌套块规则->action->块和规则-> action->count。

我希望有一个变量,它的类型允许我将操作设置为count {}block{},这样就可以实现以下两种配置:

带块:

代码语言:javascript
运行
复制
resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action {
      block {}
    }

   ...
}

计数:

代码语言:javascript
运行
复制
resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action {
      count {}
    }

   ...
}

到目前为止,我可以使用布尔变量和动态块以非常非声明性的方式实现这一结果。

我的问题是,变量的类型可以引用嵌套块的类型,这样嵌套块的内容就可以在变量中传递吗?

我试图实现的是类似于这个(非工作语法)的东西:

代码语言:javascript
运行
复制
resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action = var.action_block

   ...
  } 
}
代码语言:javascript
运行
复制
variable "action_block" {
  description = "Action of the rule"
  type         = <whatever type is accepted by aws_wafv2_web_acl->rule->action>
}

这样它就可以以类似的方式传下去

代码语言:javascript
运行
复制
module "my_waf" {
  source                   = "../modules/waf"
  action_block {
    block {}
  }
}

作为参考,我想要避免的是:

代码语言:javascript
运行
复制
    dynamic "action" {
      for_each = var.block  ? [] : [1]
      content {
        count {}
      }
    }

    dynamic "action" {
      for_each = var.block ? [1] : []
      content {
        block {}
      }
    }

非常感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 01:05:24

我能想象到的唯一边际改进是将dynamic块移动到更深一级,也许可以向读者表明,action块将始终存在,而具有动态行为的是内部的countblock块:

代码语言:javascript
运行
复制
  action {
    dynamic "count" {
      for_each = var.block ? [] : [1]
      content {}
    }
    dynamic "block" {
      for_each = var.block ? [1] : []
      content {}
    }
  }

您还可以用其他一些方法来构造这两个for_each表达式,以便输入可以具有不同的形状,但是您需要自己为该变量编写一个合适的类型约束,该约束与您想要应用到的任何条件相匹配。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70382612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档