用于依赖参数的单个 terraform 模块

问题描述

在这里,我一直在为现有的 terraform 脚本实现 terraform 模块。我在与 security_group_rules 的参数交互时遇到了一个问题。

问题是,在 aws_security_group_rule 中,我们有两个参数,即 source_security_group_idcidr_block,它们彼此不兼容。我的意思是当我们使用其中一个时,我们不能使用另一个

这是我的模块。

main.tf

resource "aws_security_group_rule" "arvn" {
  count = length(var.security_group_rules)

  type              = var.security_group_rules[count.index].type
  from_port         = var.security_group_rules[count.index].from_port
  to_port           = var.security_group_rules[count.index].to_port
  protocol          = var.security_group_rules[count.index].protocol
  cidr_blocks       = var.security_group_rules[count.index].cidr_block
  description       = var.security_group_rules[count.index].description
  security_group_id = var.security_group_id
}

变量.tf

variable "security_group_id" {
  type = string
}

variable "security_group_rules" {
  type = list(object({
    type        = string
    from_port   = number
    to_port     = number
    protocol    = string
    cidr_block  = list(string)
    description = string
  }))
}

使用

sg.tf

module "security_group_ecsInstance" {
  source = "./modules/security_group"
  vpc_id = aws_vpc.arvn.id
  name = "${local.name}-ecsInstance"
}

module "sg_rules_instance" {
  source = "./modules/security_group_rules"
  security_group_id = module.security_group_instance.id
  security_group_rules = [
    { type = "ingress",from_port = 22,to_port = 22,protocol = "tcp",cidr_block = [var.vpc_cidr],description = "ssh"  },{ type = "egress",from_port = 0,to_port = 65535,protocol = "-1",cidr_block = ["0.0.0.0/0"],description = ""  },{ type = "ingress",cidr_block = [module.security_group_alb.id],description = "alb"  }
  ]
}

在这里,前两条规则正在创建,最后一条规则由于无效的 cidr 块而失败。

但是,我知道这里的问题,如果有人帮助我创建更灵活的模块,该模块可以在 source_security_group_idcidr_block 上工作,那就太好了如果使用了另一个应该会失明。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)