Terraform 地形模块-在事实之后添加项目

Terraform 地形模块-在事实之后添加项目,terraform,terraform-provider-aws,terraform-modules,Terraform,Terraform Provider Aws,Terraform Modules,我一直在试图弄清楚这一点关于地形模块。我在代码中添加了一个安全组模块并进行了部署。部署后,我无法向组中添加新规则,除非我污染整个模块并重新部署它。我试着在谷歌上搜索,却找不到答案 我唯一能想到的就是在事实发生后添加一个资源块来添加新规则。。。但这不是违背了模块的目的吗 任何帮助都将不胜感激 这是im使用的代码示例。如果我成功地部署了它,那么返回并进行更改,更改将永远不会被读取 module "main_sg_web" { source = "terraform-aws-modules/sec

我一直在试图弄清楚这一点关于地形模块。我在代码中添加了一个安全组模块并进行了部署。部署后,我无法向组中添加新规则,除非我污染整个模块并重新部署它。我试着在谷歌上搜索,却找不到答案

我唯一能想到的就是在事实发生后添加一个资源块来添加新规则。。。但这不是违背了模块的目的吗

任何帮助都将不胜感激

这是im使用的代码示例。如果我成功地部署了它,那么返回并进行更改,更改将永远不会被读取

module "main_sg_web" {
  source = "terraform-aws-modules/security-group/aws"

  name        = "Web SG"
  description = "Security group for Web Services with port 443 open within VPC"
  vpc_id      = module.vpc.vpc_id

  ingress_cidr_blocks = ["10.10.0.0/16"]
  egress_cidr_blocks  = ["0.0.0.0/0"]
  ingress_rules       = ["https-443-tcp"]
  egress_with_cidr_blocks = [
    {
      from_port   = 0
      to_port     = 0
      protocol    = "-1"
      description = "outbound traffic"
      cidr_blocks = "0.0.0.0/0"
    }
  ]
  tags = var.vpc_tags
}

根据文档,模块输出安全组ID

您可以使用向其中添加规则:

resource "aws_security_group_rule" "allow_all" {
  type            = "ingress"
  from_port       = 0
  to_port         = 65535
  protocol        = "tcp"
  cidr_blocks     = "10.0.0.0/8"
  security_group_id = ${module.main_sg_web.this_security_group_id}
}

你能提供一个如何定义你的模块的示例代码吗?您是否尝试过在模块中使用输出变量来公开安全组?在上面发布了代码。我想我可能需要这样做才能添加规则。想知道是否有办法只修改模块而不是添加更多块。哦,好吧。