Esercizio - Aggiungere un'attività di distribuzione Bicep alla pipeline
È stata creata una pipeline semplice ed è stata configurata la connessione tra gli ambienti Azure e Azure Pipelines. A questo punto si è pronti per distribuire il file Bicep del sito Web in Azure dalla pipeline.
In questo esercizio si vedrà come:
- Aggiungere un file Bicep al repository.
- Aggiungere un passaggio della pipeline per distribuire il file Bicep.
- Eseguire di nuovo la pipeline e verificare che il sito Web sia stato distribuito correttamente.
Aggiungere il file Bicep del sito Web al repository Git
Il file Bicep del sito Web è già stato preparato. È possibile usare il file Bicep per distribuire configurazioni diverse delle risorse del sito Web a seconda dell'ambiente e della configurazione. In questo caso, il file Bicep viene aggiunto al repository.
Aprire Esplora risorse di Visual Studio Code.
Nella cartella deploy creare un nuovo file denominato main.bicep. Assicurarsi di creare il file all'interno della cartella deploy e non nella radice del repository:
Copiare il codice seguente nel file main.bicep:
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The type of environment. This must be nonprod or prod.') @allowed([ 'nonprod' 'prod' ]) param environmentType string @description('Indicates whether to deploy the storage account for toy manuals.') param deployToyManualsStorageAccount bool @description('A unique suffix to add to resource names that need to be globally unique.') @maxLength(13) param resourceNameSuffix string = uniqueString(resourceGroup().id) var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website-plan' var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}' // Define the SKUs for each component based on the environment type. var environmentConfigurationMap = { nonprod: { appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } } var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : '' resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } } resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) { name: toyManualsStorageAccountName location: location kind: 'StorageV2' sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku }
Salvare le modifiche apportate al file.
Nel terminale di Visual Studio Code eseguire questo codice per preparare le modifiche per il commit, eseguire il commit e poi eseguire il push delle modifiche nel repository:
git add deploy/main.bicep git commit -m 'Add Bicep file' git push
Sostituire i passaggi della pipeline
Aggiornare ora la definizione della pipeline per distribuire il file Bicep in Azure usando la connessione al servizio.
In Visual Studio Code aprire il file deploy/azure-pipelines.yml.
Sopra la riga
jobs:
aggiungeredeploymentDefaultLocation
per definire una variabile denominatavariables:
:trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs:
Per rimuovere il passaggio
script
dalla definizione della pipeline, eliminare le ultime due righe del file.Suggerimento
Quando si lavora in Visual Studio Code con l'estensione Azure Pipelines installata, provare a usare la combinazione di tasti CTRL+BARRA SPAZIATRICE. Viene visualizzato un menu di scelta rapida con elementi suggeriti per l'aggiunta nella posizione corrente del cursore.
Nella parte inferiore del file aggiungere un'attività che usa l'attività
AzureResourceManagerTemplateDeployment
per distribuire il file Bicep:jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
Nota
È consigliabile digitare questo codice invece di copiarlo e incollarlo dal modulo. Prestare attenzione al rientro del file. Se il rientro non è corretto, il file YAML non sarà valido. Visual Studio Code indica eventuali errori tramite righe ondulate.
Questo passaggio usa la variabile di sistema
$(Build.BuildNumber)
per assegnare un nome alla distribuzione. La variabile consente di visualizzare facilmente a quale esecuzione della pipeline corrisponde una distribuzione.La proprietà dell'attività
location
è richiesta dall'attivitàAzureResourceManagerTemplateDeployment
. Specifica l'area di Azure in cui deve essere creato un gruppo di risorse. In questo esercizio è già stato creato un gruppo di risorse e quindi la località specificata qui non è importante. Tuttavia, è comunque necessario fornire il valore. In questo caso, è stato impostato sul valore della variabiledeploymentDefaultLocation
impostata in un passaggio precedente.Salvare le modifiche apportate al file. Il file avrà un aspetto simile all'esempio seguente:
trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
Nel terminale di Visual Studio Code preparare per il commit le modifiche, eseguirne il commit nel repository ed eseguirne il push in Azure Repos:
git add deploy/azure-pipelines.yml git commit -m 'Add deployment task to pipeline' git push
Aggiungere variabili della pipeline
Nel browser selezionare Pipeline.
Selezionare la pipeline dell'esercizio.
Seleziona Modifica
Seleziona Variabili.
Selezionare Nuova variabile.
In Nome immettere ServiceConnectionName. In Valore immettere ToyWebsite.
Lasciare deselezionate le caselle di controllo e selezionare OK.
Per creare altre variabili, selezionare +.
Creare le variabili seguenti usando la stessa procedura con cui è stata creata la variabile ServiceConnectionName:
Nome variabile Valore ResourceGroupName ToyWebsite EnvironmentType nonprod Completare i passaggi di nuovo per creare una variabile denominata DeployToyManualsStorageAccount con valore true. Per questa variabile selezionare la casella di controllo Consenti agli utenti di eseguire l'override di questo valore durante l'esecuzione della pipeline.
Dopo aver creato tutte e quattro le variabili, selezionare Salva.
Eseguire la pipeline
A questo punto si è pronti per eseguire la pipeline.
Il modello include un account di archiviazione, usato dal team del sito Web per archiviare i manuali di istruzioni per i giocattoli. Poiché si sta ancora testando l'ambiente, non è necessario distribuire l'account di archiviazione ogni volta che si distribuisce il sito Web. È stato quindi creato un parametro Bicep per controllare se l'account di archiviazione è distribuito. In questo caso, si esegue la pipeline e si esegue l'override della distribuzione in modo che questa volta non distribuisca l'account di archiviazione.
Selezionare Esegui.
Viene visualizzato il riquadro Esegui la pipeline. In questo riquadro è possibile configurare le impostazioni per questa esecuzione specifica della pipeline.
Seleziona Variabili.
Selezionare la variabile DeployToyManualsStorageAccount e impostarne il valore su false. Quindi, selezionare Aggiorna.
Selezionare la freccia Indietro.
Per avviare una nuova esecuzione della pipeline, selezionare Esegui. L'avvio della pipeline può richiedere alcuni minuti. Dopo l'avvio della pipeline, il completamento della distribuzione potrebbe richiedere alcuni minuti.
Per aprire il processo, nella sezione Processi selezionare Processo. È possibile monitorare il processo durante l'esecuzione o attendere il completamento del processo per esaminarne la cronologia.
Attendere il completamento del processo.
Seleziona Mansione.
Selezionare 1 variabile del tempo di attesa usata.
Viene visualizzato il valore di override per questa esecuzione della pipeline. Il valore della variabile
DeployToyManualsStorageAccount
è false perché si è eseguito l'override del valore originale.Esaminare il resto dell'output della pipeline.
La pipeline indica che la distribuzione è riuscita.
Verificare la distribuzione
Vai al portale di Azure.
Nel menu a sinistra selezionare Gruppi di risorse.
Selezionare ToyWebsite.
In Panoramica visualizzare lo stato della distribuzione. Viene visualizzata una distribuzione completata.
Selezionare 1 completata per visualizzare i dettagli della distribuzione.
Il nome della distribuzione corrisponde al nome dell'esecuzione della pipeline.
Per visualizzare le risorse distribuite, selezionare la distribuzione. Per espandere la distribuzione e visualizzare altri dettagli, selezionare Dettagli distribuzione. In questo caso, sono presenti un piano di Servizio app di Azure e un'app.