2017-08-31 158 views
1

看起来你现在可以设置security group rule descriptions。这对维护管理访问的白名单非常有用。如何使用Terraform设置安全组规则描述?

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

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

我试图简单地宣布用在规则声明描述属性(就像您的安全组本身的描述):

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:无效或未知密钥:描述

我也尝试在规则内设置标签声明(就像您设置安全组的名称):

aws_security_group.somegroup:ingress.0:无效的或未知的密钥:在计划阶段

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

Terraform保释金标签

+0

不幸的是,像这样的更改_do_需要更新Terraform才能支持它们,因为Terraform必须将其自己的配置语言转换为幕后的AWS API调用。有[功能请求](https://github.com/terraform-providers/terraform-provider-aws/issues/1554)为此打开,如果您愿意,可以观看更新。 –

+1

看起来好像有一个拉出请求来支持这一点。 https:// github。显然,Terraform使用AWS Go API,并且正在讨论一些关于处理支持规则描述的最佳方法。 它看起来像每个规则一个CIDR块可能是要走的路,所以描述正确映射。我会密切关注公关,并在合并更改后发布我自己的答案。 – jorfus

回答

1

截至目前,有可能你的代码应该是有效的。

2

似乎你没有正确使用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" 
} 

您可以设置descriptionaws_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_groupdescription属性应的ingressegress声明之外声明,在其根范围内