如何使用Terraform设置安全组规则说明?

时间:2017-08-31 18:35:06

标签: amazon-web-services terraform network-security-groups

您现在可以设置security group rule descriptions了。这对于维护白名单以进行管理访问非常有用。

我可以在AWS控制台中设置说明,但无法弄清楚如何使用Terraform进行设置。

我的假设是,如果AWS API允许,Terraform可以直接在Terraform代码中明确支持它。或许这是一厢情愿的想法,我们不得不等待Terraform支持新功能,或者我可能只是做错了。

我尝试在规则声明中声明了description属性(就像你对安全组本身的描述一样):

    ingress {
        from_port       = 22
        to_port         = 22
        protocol        = "tcp"
        cidr_blocks     = ["123.456.789.123"]
        description     = "some rule description"
        }

Terraform在计划阶段保释:

  

aws_security_group.somegroup:ingress.0:无效或未知密钥:description

我还尝试在规则声明中设置标记(就像设置安全组名称一样):

     ingress {
         from_port       = 22
         ...
      tags {
           "Description" = "some rule description"
           }
      }

Terraform在计划阶段保释:

  

aws_security_group.somegroup:ingress.0:无效或未知密钥:标记

2 个答案:

答案 0 :(得分:1)

似乎您没有正确使用Terraform api。

您无法将description设置为aws_security_group_rule资源。

aws_security_group_rule on Terraform.io

resource "aws_security_group_rule" "allow_all" {
  type            = "ingress"
  from_port       = 0
  to_port         = 65535
  protocol        = "tcp"
  cidr_blocks     = ["0.0.0.0/0"]
  prefix_list_ids = ["pl-12c4e678"]

  security_group_id = "sg-123456"
}

您可以将description设置为aws_security_group资源。

aws_security_group on Terraform.io

来自他们的文档:

resource "aws_security_group" "allow_all" {
  name        = "allow_all"
  description = "Allow all inbound traffic"

  ingress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port       = 0
    to_port         = 0
    protocol        = "-1"
    cidr_blocks     = ["0.0.0.0/0"]
    prefix_list_ids = ["pl-12c4e678"]
  }
}

aws_security_group description属性应在ingressegress声明之外的根范围内声明

答案 1 :(得分:1)

截至目前,您的代码可能有效。