我的一个实例具有以下配置:
vpc_security_group_ids = [
"${aws_security_group.dev-ec2.id}"]
如果变量解析为sg ID值,我们称之为sg-abc123
如果我执行计划,我会:
~ aws_instance.dev-master
vpc_security_group_ids.#: "0" => "1"
vpc_security_group_ids.12345: "" => "sg-abc123"
如果我申请,我会看到:
aws_instance.dev-master: Modifying... (ID: i-abc123)
vpc_security_group_ids.#: "0" => "1"
vpc_security_group_ids.12345: "" => "sg-abc123"
aws_instance.dev-master: Modifications complete after 2s (ID: i-abc123)
但是,如果我再次运行terraform plan
,计划将保持不变 - 即使添加了SG,它仍然希望添加SG(我可以在EC2 Web控制台中看到它添加)。
如果我检查状态文件,我会在"aws_instance.dev-master"
键中看到与此SG相关的一些内容:
"depends_on": [
"aws_security_group.dev-ec2"
],
但该州还列出了:
"vpc_security_group_ids.#": "0"
如果我手动编辑JSON(是的,我知道),使用适当的ID将其更改为“1”,没有区别,plan
仍然希望进行更改。
这不是最糟糕的问题,但它确实意味着每次我们运行plan
时,检查排除此操作的操作需要更长的时间。这是一个已知的问题,如果报告或有解决方法吗?