我正在尝试创建一个Azure DevOps服务终结点,以连接到Azure资源管理器并将我的应用程序部署到应用程序服务中。
当我转到Azure DevOps>项目属性并使用UI(自动对话框)创建服务端点时,它运行良好,并且当我尝试通过Yaml管道(但可以)将我的应用程序从Yaml管道部署到App Service时Azure CLI无法正常运行(内部版本无法部署有关服务主体的抱怨)。
这是我的代码:
az_account=$(az account show)
az_subscription_id=$(echo $az_account |jq -r '.id')
az_subscription_name=$(echo $az_account |jq -r '.name')
az_tenant_id=$(echo $az_account |jq -r '.tenantId')
az_service_principal=$(az ad sp create-for-rbac -n "my-app-service-principal")
az_service_principal_password=$(echo $az_service_principal|jq -r '.password')
az_service_principal_id=$(az ad sp list --all | jq -c '.[] | select( .appDisplayName | contains("my-app-service-principal"))'| jq -r '.objectId')
export AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY=$az_service_principal_password
az devops service-endpoint azurerm create --azure-rm-service-principal-id $az_service_principal_id --azure-rm-subscription-id $az_subscription_id --azure-rm-subscription-name $az_subscription_name --azure-rm-tenant-id $az_tenant_id --name my-app-service-endpoint
如何使用Azure CLI以编程方式创建此Service Enpoint?
答案 0 :(得分:1)
您的脚本仅创建了服务主体,但未向SP授予任何权限。 我会添加一些类似这样的行来创建资源组并对其进行范围权限
az_service_principal_appid = $(echo $az_service_principal|jq -r '.appId')
az group create --name myrg --location westeurope
az role assignment create --role Contributor --assignee $az_service_principal_appid --resource-group myrg
很显然,您需要考虑如何安排资源和SP:根据您的体系结构,您可能需要很多资源。