Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du konfigurerar dina Azure DevOps-pipelines för att tillhandahålla autentisering för Databricks CLI-kommandon och API-anrop i din automatisering.
Azure DevOps-autentisering
Hantering av autentisering (första part och tredje part) i Azure DevOps görs med tjänstanslutningar. I Azure DevOps-portalen kan du komma åt tjänstanslutningar på valfri projektsida under Project-inställningar.
Om du vill autentisera och auktorisera Azure Databricks CLI-åtkomst från Azure DevOps-resurser använder du Azure Resource Manager tjänstanslutningstyp. För den här typen väljer du någon av följande autentiseringsmetoder:
- Federation av arbetsbelastningsidentiteter för Microsoft Entra
- Använder OIDC-protokollet (OpenID Connect) för att hämta token för tjänstens huvudnamn.
- Kräver att du konfigurerar Azure DevOps-genererade problem och ämnesidentifierare med det tjänstehuvudnamn som du tänker använda.
- Tillämplig autentiseringsmekanism: Azure CLI.
- Microsoft Entra tjänsthuvudkonto
- Använder ett klient-ID och en MS Entra-klienthemlighet för att generera en kortlivad OAuth-token.
- Kräver att du genererar en nyckel för den tjänsthuvudprincip du tänker använda för tjänsteanslutningen.
- Tillämpliga autentiseringsmekanismer: Azure CLI, Microsoft Entra-klienthemligheter.
- Hanterad identitet för Microsoft Entra ID
- Använder den identitet som tilldelats resursen (till exempel beräkning) som CLI körs på. När det gäller Azure DevOps är detta bara relevant om du använder självhostade agenter. Se Skapa en Azure Resource Manager-tjänstanslutning till en virtuell dator som använder en hanterad identitet.
- Tillämpliga autentiseringsmekanismer: Azure CLI, Microsoft Entra-hanterade identiteter (kallades tidigare "MSI").
När du har valt den autentiseringsmekanism som bäst matchar projektets behov måste du konfigurera den i din Azure DevOps-pipelinedefinition (pipeline.yml) för att fungera med Azure Databricks CLI.
Konfigurera din Azure DevOps-pipeline så att den använder Azure CLI för autentisering
Som standard använder Azure Databricks CLI Azure CLI som mekanism för att autentisera med Azure Databricks.
Observera att användning av Azure CLI för autentisering kräver att alla anrop till Azure Databricks CLI måste göras i en AzureCLI@2 task, vilket innebär att det inte finns något sätt att dela en autentiserad session i efterföljande uppgifter. Varje uppgift autentiseras separat, vilket introducerar svarstid när de körs.
Följande Azure Pipelines-exempelkonfiguration använder Azure CLI för att autentisera och köra Azure Databricks CLI-kommandot bundle deploy :
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
När du konfigurerar din Azure DevOps-pipeline för att använda Azure CLI för att köra Azure Databricks CLI-kommandon gör du följande:
- Använd
azureSubscriptionför att konfigurera den tjänstanslutning som du vill använda. - Konfigurera
useGlobalConfigför att använda standardvärdetAZURE_CONFIG_FILEeftersomdatabricks bundlekommandona använder miljövariabelfiltrering för underprocesser. Om detta inte har angetts kan dessa underprocesser inte hitta information om den autentiserade sessionen. - Om den inte redan har exporterats (till exempel i ett tidigare steg eller i paketkonfigurationen) exporterar du
DATABRICKS_HOSTmiljövariabeln.
Konfigurera din Azure DevOps-pipeline så att den använder en Microsoft Entra-klienthemlighet för autentisering
Om du inte vill använda Azure CLI för autentisering eftersom det ger för mycket svarstid, eller om du behöver använda Azure CLI i en annan aktivitetstyp, använder du en Microsoft Entra-klienthemlighet. Autentiseringsinformationen måste hämtas från tjänstanslutningen, så du måste använda AzureCLI@2 uppgiften i deklarationen för din pipeline.
Använd uppgiften AzureCLI@2 för att hämta klient-ID och klienthemlighet från tjänstanslutningen och exportera dem sedan som miljövariabler. Efterföljande aktiviteter kan använda dem direkt. Ett exempel finns i Använda tjänstens huvudnamn för Microsoft Entra för att hantera Databricks Git-mappar.
I följande Azure Pipelines-exempelkonfiguration används en Microsoft Entra-klienthemlighet för att autentisera och köra Azure Databricks CLI-kommandot bundle deploy :
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
addSpnToEnvironment: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"
- script: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Gör följande när du konfigurerar din Azure DevOps-pipeline för att använda Microsoft Entra-klienthemligheter för att köra Azure Databricks CLI-kommandon:
- Konfigurera
addSpnToEnvironmentför att exportera relevanta miljövariabler till det infogade skriptet. - Det infogade skriptet exporterar miljövariablerna med aktivitetsomfång som miljövariabler med jobbomfattning under namn som Azure Databricks CLI automatiskt plockar upp.
- Om den inte redan har exporterats (till exempel i ett tidigare steg eller i paketkonfigurationen) exporterar du
DATABRICKS_HOSTmiljövariabeln. - Om du markerar
ARM_CLIENT_SECRETmiljövariabeln medissecret=truemåste du uttryckligen lägga till den i varje efterföljande steg som behöver den.- Om du inte gör det kommer
ARM_CLIENT_SECRETmiljövariabeln att vara tillgänglig för varje efterföljande steg. - Miljövariabeln
ARM_CLIENT_SECRETmaskeras i utdata oavsett inställning.
- Om du inte gör det kommer
Konfigurera din Azure DevOps-pipeline så att den använder en Microsoft Entra-hanterad identitet för autentisering
Eftersom Azure-hanterad identitetsautentisering är beroende av den virtuella datorn eller containerkonfigurationen för att garantera att Azure Databricks CLI körs under rätt identitet, kräver inte din Azure DevOps-pipelinekonfiguration att du anger AzureCLI@2 uppgiften.
Följande Azure Pipelines-exempelkonfiguration använder en Microsoft Entra-hanterad identitet för att autentisera och köra Azure Databricks CLI-kommandot bundle deploy :
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb...
databricks current-user me --log-level trace
Gör följande när du konfigurerar din Azure DevOps-pipeline för att använda Microsoft Entra-hanterade identiteter för att köra Azure Databricks CLI-kommandon:
- Den hanterade Microsoft Entra-identiteten måste tilldelas rollen "Deltagare" i Databricks-arbetsytan för åtkomst.
- Värdet för
DATABRICKS_AZURE_RESOURCE_IDmiljövariabeln finns under Egenskaper för Azure Databricks-instansen i Azure Portal. - Värdet för
ARM_CLIENT_IDmiljövariabeln är klient-ID för den hanterade identiteten.
Anmärkning
DATABRICKS_HOST Om miljövariabeln inte anges i den här konfigurationen kommer värdet att härledas från DATABRICKS_AZURE_RESOURCE_ID.
Installera Azure Databricks CLI från Azure Pipelines-pipelinen
När du har konfigurerat de autentiseringsmekanismer du föredrar måste du installera Azure Databricks CLI på värden eller agenten som ska köra Azure Databricks CLI-kommandona.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Tips/Råd
- Om du inte vill installera den senaste versionen av Azure Databricks CLI automatiskt ersätter
maindu i installations-URL:en med en specifik version (till exempelv0.224.0).
Metodtips
Databricks rekommenderar att du använder Microsoft Entra-arbetsbelastningsidentitetsfederation som den föredragna autentiseringsmetoden. Den förlitar sig inte på hemligheter och är säkrare än andra autentiseringsmetoder. Det fungerar automatiskt med
AzureCLI@2uppgiften utan någon manuell konfiguration.Mer information finns i Skapa en Azure Resource Manager-tjänstanslutning som använder arbetsbelastningsidentitetsfederation.