【问题标题】:Azure policy Terraform import '' expected type 'string', got unconvertible type '[]interface {}'Azure 策略 Terraform 导入“”预期类型“字符串”,得到不可转换类型“[]interface {}”
【发布时间】:2020-12-21 18:29:00
【问题描述】:

创建了 Azure 策略以在 Kubernetes 集群中的 pod 上强制执行标签,如下所示。

策略名称:在 Kubernetes 集群中的 pod 上强制执行标签

我正在尝试使用以下命令导入策略

terraform import azurerm_policy_set_definition.test /subscriptions/<SubscriptionId>/providers/Microsoft.Authorization/policySetDefinitions/<Id>

每当我尝试使用 terraform 导入资源时,都会出现以下错误。

Error: setting `policy_definition_reference`: policy_definition_reference.0.parameters.labelsList: '' expected type 'string', got unconvertible type '[]interface {}'

非常感谢任何帮助。

【问题讨论】:

  • 这个问题有什么更新吗?答案能解决你的问题吗?

标签: azure kubernetes terraform terraform-provider-azure azure-policy


【解决方案1】:

类似于 Github 中的issue。我也认为参数看起来需要修复。您可以看到policy_definition_reference.0.parameters 是引用策略规则的参数值的映射,每个成员都需要一个字符串值。但是 Azure 中的 Policy Set Definition,parameters 属性是 JSON 格式的对象,如下所示:

也许它无法在 Terraform 中从对象转换为字符串。

而且我认为你还需要更改你在Azure门户中输入的格式,它应该与命名空间相同,不带引号并用字符;分隔。

【讨论】:

    【解决方案2】:

    如果您将鼠标悬停在标签列表的 ⓘ 上,它会提示您如何向字段提交值。您需要用 ; 分隔标签。我怀疑 terraform 将值错误地解释为 JSON。

    【讨论】:

      【解决方案3】:

      编辑:我说错了,这个错误比我想象的要早修复。它已在azurerm 2.29.0 中修复

      这可能是因为 azurerm 提供程序中的 this bug。修复 is in the works 但他们提到它可能要等到 azurerm 提供程序的下一个主要版本 (3.0) 才会发布。 我遇到了这个问题,不得不将现有的倡议定义更改为在 initiative level 处具有参数,而不是在 policy_definition_reference 中的每个策略,并让 policy parameters 引用倡议的参数。 不确定这是否是解决此问题的最佳方法,因为修改倡议参数requires 表明该倡议没有策略分配。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-18
        • 2019-12-24
        • 2018-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多