如何跳过使用Terraform破坏资源的工作?

时间:2018-12-03 01:34:28

标签: terraform

我最近使用Cloudfront,S3和WAF测试并创建了一个UI。

我对Cloudfront模块进行了一些更改,并对创建的WAF ACL名称进行了硬编码,以便每次执行terraform apply时,它将使用我创建的WAF。然后我从代码中删除了WAF模块。

当我尝试再进行一次terraform apply时,它表示WAF将被销毁。我以为是因为我删除了WAF模块。

是否可以执行terraform plan / apply并跳过销毁先前部署中最近部署的WAF的方法?

2 个答案:

答案 0 :(得分:6)

terraform state rm some.resource.to.remove

Terraform状态管理实际上工作得很好,我在移动资源时经常使用它,例如之前我对包含不同资源的模块进行模块化。在这种情况下,Terraform最初会尝试销毁旧资源并创建新资源,因此我使用:

terraform state mv aws_lb.my_lb module.some_module.aws_lb.my_lb

答案 1 :(得分:2)

您可以使用terraform -target=resource仅更新特定资源及其依赖项。这可能很笨拙,但是应该可以让您解决丢失的声明。

或者,您可以从.tfstate文件中删除资源。我不知道terraform是否可以选择这样做,如果资源有很多依赖关系,可能会很复杂。