微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure策略Terraform导入”预期类型为“字符串”,不可转换类型为“ [] interface {}”

如何解决Azure策略Terraform导入”预期类型为“字符串”,不可转换类型为“ [] interface {}”

创建了Azure策略,以在Kubernetes集群中的Pod上强制标签

策略名称:在Kubernetes集群中的Pod上添加标签

Policy Configuration

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

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 {}'

非常感谢任何帮助。

解决方法

它类似于Github中的issue。我也认为参数似乎需要固定。您可以看到df[Columns] = Values是所引用策略规则的参数值的映射,并且每个成员都需要一个字符串值。但是在Azure中的“策略集定义”中,parameters属性是JSON格式的对象,如下所示:

enter image description here

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

我认为您还需要更改在Azure门户中输入的格式,该格式应与名称空间相同,不带引号,并用字符policy_definition_reference.0.parameters分隔。

,

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

enter image description here

,

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

中修复

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。