使用Terraform在Azure中分配角色

使用Terraform在Azure中分配角色,azure,terraform,Azure,Terraform,我正在创建一个地形计划来在Azure中设置一些资源(其中包括一个AKS集群)。对于集群的使用,我创建了一个服务主体,该主体允许在docker注册表中扮演“acrpull”角色(我使用innovationnorway/service principal/azuread模块完成了这项工作,而对于其他所有内容,我都创建了自己的东西) 作为我的下一步,我需要在资源组(我也创建了资源组)上为这个服务主体分配一个“网络参与者”角色,基本上是复制分配 为此,我正在这样做 resource "azur

我正在创建一个地形计划来在Azure中设置一些资源(其中包括一个AKS集群)。对于集群的使用,我创建了一个服务主体,该主体允许在docker注册表中扮演“acrpull”角色(我使用
innovationnorway/service principal/azuread
模块完成了这项工作,而对于其他所有内容,我都创建了自己的东西)

作为我的下一步,我需要在资源组(我也创建了资源组)上为这个服务主体分配一个“网络参与者”角色,基本上是复制分配

为此,我正在这样做

resource "azurerm_role_assignment" "network_contributor" {
  scope                = module.resource_group.resource_group_id
  role_definition_name = "Network Contributor"
  principal_id         = module.service_principal.object_id
}
但是,我没有看到预期的结果(例如:集群能够使用在我的主资源组中从为集群自动创建的RG中创建的静态IP)

我做错什么了吗?例如,我没有收到错误,集群能够访问注册表


谢谢

在这种情况下,解决方案似乎是添加一个“depens_on”块,以确保它遵循SP

在调试类似的东西时,我发现手动创建一个有用的块,就像您期望的那样,然后将正确的块与terraform创建的块进行比较。你可以使用Azurewell中的“导出模板”选项轻松地比较两者,这是不可能知道的,因为它使用了一些模块的随机输出,那么我们如何知道它为什么不工作呢?还要确保你使用的是最新的Azureprovider@Liam使用手动导出的好主意,谢谢