【问题标题】:Terraform wants to change boot_diagnostics to nullTerraform 想要将 boot_diagnostics 更改为 null
【发布时间】:2020-07-12 23:09:54
【问题描述】:

运行 terraform plan 时,输出状态将设置为 false 的 boot_diagnostics 的值更改为 null

  - boot_diagnostics {
      - enabled     = false -> null

在门户中,boot_diagnostics 被禁用。

在运行 terraform apply 时,资源已更改。

申请完成!资源:添加 0 个,更改 1 个,销毁 0 个。

使用的版本: Terraform v0.12.10 + provider.azurerm v1.35.0

问题是:为什么 terraform 显示 null 虽然状态等于门户中的现实?

【问题讨论】:

  • 你能显示完整的计划输出吗?您是否还可以编辑问题以将 Terraform 代码包含为 minimal reproducible example 以重现此问题?

标签: terraform boot diagnostics


【解决方案1】:

我不熟悉这种具体情况,但这种情况通常是由于提供者没有完全处理远程 API 插入的默认值。

在这种情况下,远程系统似乎将enabled 设置为false(如果未明确设置),但提供者本身并不知道这一点,因此当您重新计划时,它认为需要更新将enabled 设置回null 的参数,现在Terraform 表示根本没有设置参数。

对于这种情况,通常的解决方法是更新您的配置以将值显式设置为默认值。对于这种情况,这意味着在您的配置中明确设置 enabled

  boot_diagnostics {
    enabled = false
  }

使用该设置,提供者应该看到远程对象与配置匹配,因此不打算进行任何更改。

理想情况下,提供者应该为这样的参数设置一个默认值,其中“未设置”实际上不是远程 API 中的有效值,但显式设置该值通常是提供者不完全的情况下的一个很好的解决方法处理远程 API 进行的规范化/转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-07
    • 2013-10-24
    • 1970-01-01
    • 2021-03-25
    • 2015-01-26
    • 2019-08-23
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多