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
- Accesso all'istanza dell'hub di Azure Stack con il servizio app RP abilitato.
- Soluzione Azure DevOps associata al tenant dell'hub di Azure Stack.
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 .\
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. Aprire lo strumento da riga di comando, ad esempio Windows PowerShell o Bash e accedere. Usare il comando seguente:
az login
Usare il
register
comando per un nuovo ambiente o ilupdate
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
Ottenere l'ID sottoscrizione e il gruppo di risorse da usare per il nome SPN.
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
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" } }
- Accedere al portale dell'hub di Azure Stack.
- Selezionare Crea una risorsa>Web e app Web per dispositivi mobili>.
- Selezionare la sottoscrizione.
- Creare o selezionare un gruppo di risorse.
- Digitare il nome dell'app. Il nome dell'app verrà visualizzato nell'URL dell'app, ad esempio
yourappname.appservice.<region>.<FQDN>
- Selezionare lo stack di runtime per l'app. Il runtime deve corrispondere al codice che si prevede di usare per l'app Web.
- Selezionare il sistema operativo che ospiterà il runtime e l'app.
- Selezionare o digitare l'area per l'istanza dell'hub di Azure Stack.
- Selezionare il piano in base all'istanza, all'area e al sistema operativo dell'app dell'hub di Azure Stack.
- Selezionare Rivedi e crea.
- Esaminare l'app Web. Selezionare Crea.
- Selezionare Vai alla risorsa.
- Annotare il nome dell'app. Si aggiungerà il nome al documento yml che definisce la pipeline nel repository.
Creare una connessione al servizio. Saranno necessari i valori del nome SPN e il nome della sottoscrizione dell'hub di Azure Stack.
Accedere all'organizzazione di Azure DevOps e quindi passare al progetto.
Selezionare Impostazioni progetto e quindi Connessioni al servizio.
Selezionare Connessioni>al servizio Nuova connessione al servizio.
Selezionare Azure Resource Manager e quindi avanti.
Selezionare Entità servizio (manuale).
Selezionare Azure Stack da Ambiente.
Compilare il modulo e quindi selezionare Verifica e salva.
Assegnare un nome alla connessione al servizio. È necessario il nome della connessione al servizio per creare la pipeline yaml.
Se il codice dell'app Web non è stato aggiunto al repository, aggiungerlo ora.
Aprire il repository. Selezionare il repository e selezionare Sfoglia.
Selezionare Pipeline
Selezionare New pipeline (Nuova pipeline).
Selezionare GIT Azure Repos.
Selezionare il repository.
Selezionare Starter pipeline (Pipeline di avvio).
Tornare al repository e aprire .
azure-pipelines.yml
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 valoretrue
nella pipeline di compilazione o versione, come in questo esempio.Aggiornare il
azureSubscription
valore con il nome della connessione al servizio.Aggiornare con il nome dell'app
appName
. A questo punto si è pronti per la distribuzione.
Le attività di Azure seguenti vengono convalidate con l'hub di Azure Stack: