首页 > 解决方案 > Terraform:循环动态添加acl规则

问题描述

如何使用循环动态添加 acl 规则?我想举个例子:变量“protocol”将从对象列表[protocol1,protocol2,protocol3]中获取所有协议值。

我的代码结构是:

-- Dev
  -- main.tf
  -- vars.tf
-- modules
  -- acl
    -- ressources.tf
 

这是我的vars.tf

variable "acl_rules" {
      type          = list (object({
      protocol      = string
      rule_no       = number
      action        = string
      cidr_block    = string
      from_port     = number
      to_port       = number
  }))
  default = [
     { protocol = "tcp", rule_no = 200, action = "allow", cidr_block = "10.3.0.0/18", from_port = 443, to_port = 443 },
     { protocol = "udp", rule_no = 100, action = "allow", cidr_block = "10.3.0.0/18", from_port = 54, to_port = 54 },
     { protocol = "http", rule_no = 300, action = "allow", cidr_block = "10.3.0.0/18", from_port = 80, to_port = 80 }
  ] 
}

这是我的main.tf

# ACL for public subnet
module "acl" {
  source            = "../modules/acl"
  vpc_id            = module.vpc.vpcId 
  pub_snId_aza      = element(module.pub-sn.snId[*], 0)  
  
  for_each = [for rule_obj in var.acl_rules :{
    protocol        = var.rule_obj.protocol
    rule_no         = var.rule_obj.rule_no
    action          = var.rule_obj.action
    cidr_block      = var.rule_obj.cidr_block
    from_port       = var.rule_obj.from_port
    to_port         = var.rule_obj.to_port
    }
  ]         
  
}

标签: terraformterraform-provider-aws

解决方案


推荐阅读