假设我在运行terraform apply
时没有使用refresh
标志并且未提及任何计划。
terraform会相对于已部署的状态刷新我定义为IaC的状态吗?还是只查看我当前的状态文件,并将其与我更新为IaC的文件进行比较。
文档中没有提到terraform的默认刷新行为。
答案 0 :(得分:1)
terrain apply将始终检查新状态。默认情况下,任何地形操作都将始终首先刷新状态。理想情况下,您应始终执行free_page()
,然后使用terraform plan -out <planName>.plan
在环境中应用此计划。这样可以确保一致性,并且您完全知道环境中将要发生的情况。
如果计划旧了,同时环境发生了变化,则terraform会检测到该情况并给您带来错误-迫使您重新计划并应用。
答案 1 :(得分:1)
Terraform将在运行依赖状态的命令(例如plan
,apply
,destroy
)之前自动刷新状态。
您可以通过查看运行以下命令的输出来自己查看:
$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
data.aws_region.current: Refreshing state...
------------------------------------------------------------------------
No changes. Infrastructure is up-to-date.
This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.