Eseguire la distribuzione nell'hub di Azure Stack servizio app usando Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Questo articolo illustra come configurare una pipeline CI/CD per la distribuzione di un'applicazione nei servizi app in un'istanza dell'hub di Azure Stack usando Azure Pipelines.

Questo articolo illustra come creare o convalidare:

  • Credenziali dell'entità servizio (SPN) dell'hub di Azure Stack per la pipeline.
  • Un'app Web nell'istanza dell'hub di Azure Stack.
  • Una connessione al servizio all'istanza dell'hub di Azure Stack.
  • Un repository con il codice dell'app da distribuire nell'app

Prerequisiti

Creare o convalidare il nome SPN

Un nome SPN fornisce credenziali basate sui ruoli in modo che i processi all'esterno di Azure possano connettersi e interagire con le risorse. È necessario un nome SPN con accesso ai collaboratori e gli attributi specificati in queste istruzioni da usare con la pipeline di Azure DevOps.

Gli utenti dell'hub di Azure Stack non hanno l'autorizzazione per creare il nome SPN. Sarà necessario richiedere questa entità all'operatore cloud. Le istruzioni vengono fornite qui per poter creare il nome SPN se si è un operatore cloud oppure è possibile convalidare il nome SPN se si è uno sviluppatore che usa un nome SPN nel flusso di lavoro fornito da un operatore cloud.

L'operatore cloud dovrà creare il nome SPN usando l'interfaccia della riga di comando di Azure.

I frammenti di codice seguenti vengono scritti per un computer Windows usando il prompt di PowerShell con l'interfaccia della riga di comando di Azure per l'hub di Azure Stack. Se si usa l'interfaccia della riga di comando in un computer Linux e bash, rimuovere l'estensione della riga o sostituirla con .\

  1. Preparare i valori dei parametri seguenti usati per creare il nome SPN:

    Parametro Esempio Descrizione
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Endpoint di gestione delle risorse.
    suffisso-storage-endpoint "orlando.azurestack.corp.microsoft.com" Suffisso dell'endpoint per gli account di archiviazione.
    suffisso-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Suffisso DNS del servizio Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ID risorsa di Active Directory.
    endpoint-sql-management https://notsupported Endpoint di gestione di sql server. Impostare il valore su https://notsupported
    profile 2019-03-01-hybrid Profilo da usare per questo cloud.
  2. Aprire lo strumento da riga di comando, ad esempio Windows PowerShell o Bash e accedere. Usare il comando seguente:

    az login
    
  3. Usare il register comando per un nuovo ambiente o il update comando se si usa un ambiente esistente. Usare il comando seguente.

    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
    
  4. Ottenere l'ID sottoscrizione e il gruppo di risorse da usare per il nome SPN.

  5. Creare il nome SPN con il comando seguente con l'ID sottoscrizione e il gruppo di risorse:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    

    Se non si dispone dei privilegi dell'operatore cloud, è anche possibile accedere con il nome SPN fornito dall'operatore cloud. Sono necessari l'ID client, il segreto e l'ID tenant. Con questi valori, è possibile usare i comandi seguenti dell'interfaccia della riga di comando di Azure per creare l'oggetto JSON che contiene i valori necessari per creare la connessione al servizio.

    az login --service-principal -u "<client-id>" -p "<secret>" --tenant "<tenant-ID>" --allow-no-subscriptions
    az account show
    
  6. Controllare l'oggetto JSON risultante. Si userà l'oggetto JSON per creare la connessione al servizio. L'oggetto JSON deve avere gli attributi seguenti:

    {
      "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"
      }
    }
    

Creare la destinazione dell'app Web

  1. Accedere al portale dell'hub di Azure Stack.
  2. Selezionare Crea una risorsa>Web e app Web per dispositivi mobili>.
  3. Selezionare la sottoscrizione.
  4. Creare o selezionare un gruppo di risorse.
  5. Digitare il nome dell'app. Il nome dell'app verrà visualizzato nell'URL dell'app, ad esempio yourappname.appservice.<region>.<FQDN>
  6. Selezionare lo stack di runtime per l'app. Il runtime deve corrispondere al codice che si prevede di usare per l'app Web.
  7. Selezionare il sistema operativo che ospiterà il runtime e l'app.
  8. Selezionare o digitare l'area per l'istanza dell'hub di Azure Stack.
  9. Selezionare il piano in base all'istanza, all'area e al sistema operativo dell'app dell'hub di Azure Stack.
  10. Selezionare Rivedi e crea.
  11. Esaminare l'app Web. Selezionare Crea.
  12. Selezionare Vai alla risorsa.
  13. Annotare il nome dell'app. Si aggiungerà il nome al documento yml che definisce la pipeline nel repository.

Creare una connessione al servizio

Creare una connessione al servizio. Saranno necessari i valori del nome SPN e il nome della sottoscrizione dell'hub di Azure Stack.

  1. Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.

  2. Selezionare Impostazioni progetto e quindi Connessioni al servizio.

  3. Selezionare Connessioni>al servizio Nuova connessione al servizio.

  4. Selezionare Azure Resource Manager e quindi avanti.

  5. Selezionare Entità servizio (manuale).

  6. Selezionare Azure Stack da Ambiente.

  7. Compilare il modulo e quindi selezionare Verifica e salva.

  8. Assegnare un nome alla connessione al servizio. È necessario il nome della connessione al servizio per creare la pipeline yaml.

    Creare una connessione al servizio per l'hub di Azure Stack

Creare il repository e aggiungere la pipeline

  1. Se il codice dell'app Web non è stato aggiunto al repository, aggiungerlo ora.

  2. Aprire il repository. Selezionare il repository e selezionare Sfoglia.

  3. Selezionare Pipeline

  4. Selezionare New pipeline (Nuova pipeline).

  5. Selezionare GIT Azure Repos.

  6. Selezionare il repository.

  7. Selezionare Starter pipeline (Pipeline di avvio).

  8. Tornare al repository e aprire .azure-pipelines.yml

  9. Aggiungere il codice yaml seguente:

    # 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)'
    

    Nota

    Per ignorare gli errori SSL, impostare una variabile denominata VSTS_ARM_REST_IGNORE_SSL_ERRORS sul valore true nella pipeline di compilazione o versione, come in questo esempio.

  10. Aggiornare il azureSubscription valore con il nome della connessione al servizio.

  11. Aggiornare con il nome dell'app appName . A questo punto si è pronti per la distribuzione.

Note sull'uso delle attività di Azure con l'hub di Azure Stack

Le attività di Azure seguenti vengono convalidate con l'hub di Azure Stack:

Passaggi successivi