我们尝试在 Azuredevops 中创建一个自动化管道,以便为任何类型的资源分配资源级别的角色。并在下面的模板中用于该目的。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"roleDefinitionId": {
"type": "string"
},
"principalId": {
"type": "string"
}
},
"variables": {
"roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
},
"resources": [
{
"type": "Microsoft.OperationalInsights/querypacks",
"apiVersion": "2021-04-01-preview",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
参数.json
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"roleDefinitionId": {
"value": "#{roleDefinitionId}#"
},
"principalId": {
"value": "#{principalId}#"
}
}
}
创建了 Azuredevops 任务来替换参数文件“principalid”和“roledefinitionid”id,并且在使用更新的模板执行 Arm 部署组任务时失败。
注意:在上面的示例中,我尝试将贡献者分配仅分配给特定组的特定资源 qpck-1。
有没有办法使用相同的模板在资源级别为不同类型的资源分配角色。
模板明确显示了资源
querypacks
,但是,它应该被参数化
所以你可以改变
"type": "Microsoft.OperationalInsights/querypacks"
到
"type": "[parameters('resourceType')]"
并在参数文件中添加以下内容
"resourceType": {
"value": "#{resourceType}#"
},
"resourceName": {
"value": "#{resourceName}#"
}
其中
resourceType
可以是您需要的任何类型,例如 "Microsoft.Compute/virtualMachines"
,而 resourceName
云可以是虚拟机的名称,例如 ODS_VM
顺便说一句,最好提供错误消息以确定原因和解决方案。
希望有帮助