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
我正在使用withingress
和per 规则声明安全组egress
。不确定是否要aws_security_group_rule
因此声明这些。
不确定我遗漏了什么,如能得到任何指导我将不胜感激。
谢谢。
答案1
因此,网络 ACL 和安全组的导入如下所示
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
有一堆外部文件,这与你的 TF 配置不同。aws_security_group_rule
因此,在计划中它会说我需要销毁它们,然后它会在资源本身中创建它们。
您可能会遇到没有安全组规则的小问题,但最终它会在应用时清除。只需查看您的计划,aws_security_group
我敢打赌您的所有规则都列在其中