Terraform Plan状态刷新及基础设施变更相关技术问询
Terraform Plan相关常见问题解答
问题1:Terraform Plan是否会刷新状态?
默认情况下,terraform plan会自动执行状态刷新(等效于先运行terraform refresh),将基础设施的当前实际状态同步到本地状态文件,之后再对比配置文件与状态文件生成执行计划。若要跳过刷新,可添加-refresh=false参数,此时仅基于现有状态文件生成计划。
问题2:手动修改基础设施后,同步修改配置文件匹配该变更,执行terraform plan是否会显示变更?是否会同步状态文件?
这种场景下terraform plan不会显示任何变更。因为执行plan时的默认刷新步骤会先把手动修改的基础设施状态同步到状态文件,此时配置文件与状态文件内容完全一致,对比后无差异,自然不会生成变更计划。状态文件会被更新为匹配手动修改后的基础设施状态,这是正常行为。比如你手动修改AWS资源标签后,把配置文件的标签改成相同内容,刷新后状态文件的标签也会同步为手动修改后的内容,和配置文件对齐,因此无变更需要执行。
问题3:在terraform plan之后、apply之前手动修改AWS标签,会发生什么?
这会触发基础设施状态漂移问题。terraform plan生成的计划基于当时的状态文件,但手动修改后实际基础设施状态已与计划时的状态不符:
- 若执行默认的
terraform apply,Terraform会先执行状态刷新,发现配置文件与实际状态的差异,随后按照配置文件的定义覆盖你手动修改的标签,将其还原为配置文件中的内容。 - 若添加
-refresh=false参数执行apply,Terraform会跳过刷新,直接按照之前plan的计划执行,此时可能因实际状态与预期不符出现报错,或执行不必要的操作。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

