Distribuera till Azure Stack Hub App Service med hjälp av Azure Pipelines
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Den här artikeln beskriver steg för steg hur du konfigurerar en CI/CD-pipeline för att distribuera ett program till apptjänster i en Azure Stack Hub-instans med hjälp av Azure Pipelines.
I den här artikeln får du lära dig att skapa eller verifiera:
- Autentiseringsuppgifter för Azure Stack Hub-tjänstens huvudnamn (SPN) för pipelinen.
- En webbapp i din Azure Stack Hub-instans.
- En tjänstanslutning till din Azure Stack Hub-instans.
- En lagringsplats med din appkod som ska distribueras till din app
Förutsättningar
- Åtkomst till Azure Stack Hub-instansen med App Service RP aktiverat.
- En Azure DevOps-lösning som är associerad med din Azure Stack Hub-klientorganisation.
Skapa eller verifiera ditt SPN
Ett SPN tillhandahåller rollbaserade autentiseringsuppgifter så att processer utanför Azure kan ansluta till och interagera med resurser. Du behöver ett SPN med deltagaråtkomst och de attribut som anges i de här anvisningarna för användning med din Azure DevOps-pipeline.
Som användare av Azure Stack Hub har du inte behörighet att skapa SPN. Du måste begära det här huvudkontot från molnoperatören. Instruktionerna tillhandahålls här så att du kan skapa SPN om du är molnoperatör, eller så kan du verifiera SPN om du är utvecklare med ett SPN i arbetsflödet som tillhandahålls av en molnoperatör.
Molnoperatören måste skapa SPN med hjälp av Azure CLI.
Följande kodfragment skrivs för en Windows-dator med PowerShell-prompten med Azure CLI för Azure Stack Hub. Om du använder CLI på en Linux-dator och bash tar du antingen bort linjetillägget eller ersätter dem med en \
.
Förbered värdena för följande parametrar som används för att skapa SPN:
Parameter Exempel Description endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Slutpunkten för resurshantering. suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" Slutpunktssuffixet för lagringskonton. suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Dns-suffixet för Key Vault-tjänsten. endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Resurs-ID:t för Azure Active Directory. endpoint-sql-management https://notsupported Sql Server-hanteringsslutpunkten. Ange detta till https://notsupported
profil 2019-03-01-hybrid Profil som ska användas för det här molnet. Öppna kommandoradsverktyget, till exempel Windows PowerShell eller Bash, och logga in. Ange följande kommando:
az login
register
Använd kommandot för en ny miljö ellerupdate
kommandot om du använder en befintlig miljö. Använd följande kommando.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2019-03-01-hybrid
Hämta ditt prenumerations-ID och resursgrupp som du vill använda för SPN.
Skapa SPN med följande kommando med prenumerations-ID och resursgrupp:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Om du inte har behörighet som molnoperatör kan du även logga in med det SPN som tillhandahålls av molnoperatören. Du behöver klient-ID: t, hemligheten och ditt klientorganisations-ID. Med dessa värden kan du använda följande Azure CLI-kommandon för att skapa JSON-objektet som innehåller de värden som du behöver för att skapa tjänstanslutningen.
az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions az account show
Kontrollera det resulterande JSON-objektet. Du använder JSON-objektet för att skapa tjänstanslutningen. JSON-objektet ska ha följande attribut:
{ "environmentName": "<Environment name>", "homeTenantId": "<Tenant ID for the SPN>", "id": "<Application ID for the SPN>", "isDefault": true, "managedByTenants": [], "name": "<Tenant name>", "state": "Enabled", "tenantId": "<Tenant ID for the SPN>", "user": { "name": "<User email address>", "type": "user" } }
Skapa webbappens mål
- Logga in på Azure Stack Hub-portalen.
- Välj Skapa en resurs>Webb + Mobilapp>.
- Välj din prenumeration.
- Skapa eller välj en resursgrupp.
- Skriv namnet på din app. Namnet på appen visas i URL:en för din app, till exempel
yourappname.appservice.<region>.<FQDN>
- Välj körningsstacken för din app. Körningen måste matcha den kod som du planerar att använda för din webbapp.
- Välj det operativsystem (OS) som ska vara värd för din körning och app.
- Välj eller skriv Region för din Azure Stack Hub-instans.
- Välj planen baserat på din Azure Stack Hub-instans, region och appoperativsystem.
- Välj Granska + skapa.
- Granska din webbapp. Välj Skapa.
- Välj Gå till resurs.
- Anteckna appnamnet. Du lägger till namnet i yml-dokumentet som definierar din pipeline på lagringsplatsen.
Skapa en tjänstanslutning
Skapa en tjänstanslutning. Du behöver värdena från ditt SPN och namnet på din Azure Stack Hub-prenumeration.
Logga in på din Azure DevOps-organisation och gå sedan till projektet.
Välj Projektinställningar och sedan Tjänstanslutningar.
Välj Tjänstanslutningar>Ny tjänstanslutning.
Välj Azure Resource Manager och välj sedan Nästa.
Välj Tjänstens huvudnamn (manuellt).
Välj Azure Stack från Miljö.
Fyll i formuläret och välj sedan Verifiera och spara.
Ge tjänstanslutningen ett namn. (Du behöver namnet på tjänstanslutningen för att skapa din yaml-pipeline).
Skapa din lagringsplats och lägg till pipeline
Om du inte har lagt till webbappkoden på lagringsplatsen lägger du till den nu.
Öppna lagringsplatsen. Välj lagringsplatsen och välj Bläddra.
Välj Pipelines
Välj Ny pipeline.
Välj Azure Repos Git.
Välj din lagringsplats.
Välj Startpipeline.
Gå tillbaka till lagringsplatsen och öppna
azure-pipelines.yml
.Lägg till följande yaml:
# Starter pipeline # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml trigger: - main variables: azureSubscription: '<your connection name>' VSTS_ARM_REST_IGNORE_SSL_ERRORS: true steps: - task: AzureWebApp@1 displayName: Azure Web App Deploy inputs: azureSubscription: $(azureSubscription) appName: <your-app-name> package: '$(System.DefaultWorkingDirectory)'
Anteckning
Om du vill ignorera SSL-fel anger du en variabel med namnet
VSTS_ARM_REST_IGNORE_SSL_ERRORS
till värdettrue
i bygg- eller versionspipelinen, som i det här exemplet.azureSubscription
Uppdatera värdet med namnet på tjänstanslutningen.appName
Uppdatera med appnamnet. Nu är du redo att distribuera.
Information om hur du använder Azure-uppgifter med Azure Stack Hub
Följande Azure-uppgifter verifieras med Azure Stack Hub:
- Azure PowerShell
- Azure File Copy
- Distribution av Azure-resursgrupp
- Azure App Service distribuera
- Azure App Service Hantera
- Azure SQL databasdistribution