我有一个带有 vpc、公共子网、路由和安全组的简单 AWS 部署。运行terraform apply将启动一个 AWS 实例,我将该实例配置为关联一个公共 IP。创建实例后,我运行terraform plan它并正确地说一切都是最新的。到目前为止没有问题。
我们有一个管理节点,如果它在一段时间内未使用,作为节省成本的措施,它将关闭该实例。
问题是:一旦该实例关闭,当我运行时terraform plan,aws 提供程序会看到所有配置正确,但由于公共 IP 已发布,associate_public_ip_address 的值不再与 terraform 配置中的配置相匹配,因此 terraform 需要删除并重新创建该实例:
associate_public_ip_address: "false" => "true" (forces new resource)
有没有办法让 terraform 忽略那个参数?
这个问题与https://github.com/hashicorp/terraform/issues/7262略有关系。但在我的情况下,我不想设置预期状态,我只想能够告诉 terraform 忽略该参数,因为它现在没有关联就可以了,只要它被配置为关联时开始。
(我在写这个问题时想到了这一点:我没有尝试配置子网以自动关联其中启动的实例的公共 ip。可以想象,通过使子网自动执行此操作,并从“aws_instance”中删除选项,我可能会能够使 terraform 不注意该值...但我对此表示怀疑。)