导入的Databricks集群未变更,Terraform为何仍执行原地更新?
问题原因解析
Terraform状态与配置的匹配逻辑导致字段被置为null
Terraform核心是通过配置文件定义资源的「期望状态」来管理资源。导入集群后,状态文件会记录集群的所有实际配置,但如果本地配置里没有写出autoscale、spark_env_vars、cluster_log_conf这些字段,Terraform会默认你期望将这些字段设为null(即移除对应配置),执行terraform apply时就会触发原地更新,清空这些字段。autotermination_minutes值变更的根源
本地配置里没显式定义autotermination_minutes,但Databricks的Terraform Provider对该参数有默认值(比如60)。导入后状态文件保存的是集群实际的10分钟,Terraform对比「配置的默认值60」和「状态里的实际值10」,就会判定需要把该值修改为60。硬编码引发覆盖问题的原因
硬编码字段后,这些值就成了Terraform认定的「期望状态」。当你手动修改集群参数(比如把max_workers改成5),Terraform会检测到实际状态和配置不一致,按照核心逻辑,会强制将实际状态同步回配置里的硬编码值(8),导致手动修改被覆盖。
内容的提问来源于stack exchange,提问作者sotn
相关产品推荐
相关产品推荐

