在版本0.9.4和0.10.4中发生
我使用Terraform的导入命令导入了AWS安全组列表,如下所示:
terraform import aws_security_group.production_servers sg-xxxxxxx
当我做:
terraform plan aws_security_group.production_servers
一切都很好,但是当我做一个总体的计划时:
terraform plan - aws_security_group_rule.load_balancer_1 - aws_security_group_rule.load_balancer_1-1 - aws_security_group_rule.load_balancer_1-2 - aws_security_group_rule.load_balancer_1-3 - aws_security_group_rule.production_servers - aws_security_group_rule.production_servers-1 - aws_security_group_rule.production_servers-2 - aws_security_group_rule.production_servers-3 - aws_security_group_rule.production_services_access - aws_security_group_rule.production_services_access-1 - aws_security_group_rule.production_services_access-2
一些aws_security_group_rule (保存在我的.tfstate文件中)将被删除。
我声明安全组使用aws_security_group与ingress和egress每个规则。 不确定是否声明这些aws_security_group_rule 。
不知道我错过了什么,任何指导将不胜感激。
谢谢。
因此,networkingACL和安全组的导入就是这样的
resource "aws_security_group" "production_servers" {} resource "aws_security_group_rule" "production_servers-1" {} resource "aws_security_group_rule" "production_servers" {}
你提到你拥有aws_security_group中的所有规则,这是完全正确的。 我更喜欢外面的,因为如果你改变一个规则并且在一个组里有10-15条规则,它就更具可读性。
所以,terraform写了一个没有规则的空白aws_security_group ,并且在状态文件中有一堆外部的aws_security_group_rule ,这与你的TFconfiguration不同。
所以在一个计划中,我会说我需要销毁它们,然后在资源本身中创build它们。
你可能会得到一些没有安全组规则的小细节,但最终它会清理一个应用程序。 只要看看你的aws_security_group的计划,我敢打赌,你所有的规则都列在那里