如何解决Azure策略Terraform导入”预期类型为“字符串”,不可转换类型为“ [] interface {}”
创建了Azure策略,以在Kubernetes集群中的Pod上强制标签。
我正在尝试使用以下命令导入策略
terraform import azurerm_policy_set_deFinition.test /subscriptions/<SubscriptionId>/providers/Microsoft.Authorization/policySetDeFinitions/<Id>
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格式的对象,如下所示:
也许无法在Terraform中将其从对象转换为字符串。
我认为您还需要更改在Azure门户中输入的格式,该格式应与名称空间相同,不带引号,并用字符policy_definition_reference.0.parameters
分隔。
如果将鼠标悬停在标签列表的ⓘ上,则可以提示您如何向该字段提交值。您需要将标签以;分隔。我怀疑terraform错误地将值解释为JSON。
,编辑:我弄错了,这个错误比我想的要早修复。它已在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 举报,一经查实,本站将立刻删除。