Avvio rapido: Usare un modello di Resource Manager per distribuire un'app Web Linux in Azure
Azure DevOps Services
Introduzione ai modelli di Azure Resource Manager (modelli arm) distribuendo un'app Web Linux con MySQL. I modelli di Resource Manager consentono di salvare la configurazione nel codice. L'uso di un modello di Resource Manager è un esempio di infrastruttura come codice e una buona procedura devOps.
Un modello di Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello usa la sintassi dichiarativa. Nella sintassi dichiarativa si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari per creare la distribuzione.
È possibile usare la sintassi JSON o Bicep per distribuire le risorse di Azure. Altre informazioni sulla differenza tra JSON e Bicep per i modelli.
Prerequisiti
Prima di iniziare, è necessario disporre di quanto segue:
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Un'organizzazione Di Azure DevOps attiva. Iscriversi per Azure Pipelines.
- (Per le distribuzioni bicep) Gruppo di risorse esistente. Creare un gruppo di risorse con portale di Azure, interfaccia della riga di comando di Azure o Azure PowerShell.
Ottenere il codice
Fork questo repository in GitHub:
https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql
Rivedere il modello
Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
Il modello definisce diverse risorse:
- Microsoft.Web/serverfarms
- Microsoft.Web/sites
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/firewallrules
- Microsoft.DBforMySQL/servers/database
Creare la pipeline e distribuire il modello
Accedere all'organizzazione di Azure DevOps e passare al progetto. Creare un progetto se non ne è già disponibile uno.
Passare a Pipeline e quindi selezionare Crea pipeline.
Selezionare GitHub come percorso del codice sorgente.
Nota
È possibile che venga reindirizzato a GitHub per accedere. In questo caso, immettere le credenziali di GitHub.
Quando viene visualizzato l'elenco dei repository, selezionare
yourname/azure-quickstart-templates/
.Nota
È possibile che venga reindirizzato a GitHub per installare l'app Azure Pipelines. In tal caso, selezionare Approve and install (Approva e installa).
Quando viene visualizzata la scheda Configura, selezionare
Starter pipeline
.Sostituire il contenuto della pipeline con questo codice:
trigger: - none pool: vmImage: 'ubuntu-latest'
Creare tre variabili:
siteName
,administratorLogin
eadminPass
.adminPass
deve essere una variabile segreta.- Selezionare Variabili.
- Usare il
+
segno per aggiungere tre variabili. Quando si creaadminPass
, selezionare Mantieni segreto questo valore. - Al termine, fare clic su Salva .
Variabile valore Segreto? siteName mytestsite
No adminUser fabrikam
No adminPass Fqdn:5362!
Sì Eseguire il mapping della variabile
$(adminPass)
privata in modo che sia disponibile nell'attività Distribuzione gruppo di risorse di Azure. Nella parte superiore del file YAML eseguire il mapping$(adminPass)
a$(ARM_PASS)
.variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest'
Aggiungere l'attività Copia file al file YAML. Si userà il
101-webapp-linux-managed-mysql
progetto. Per altre informazioni, vedere Creare un'app Web in Linux con il repository di Azure per MySQL per altri dettagli.variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest' steps: - task: CopyFiles@2 inputs: SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)'
Aggiungere e configurare l'attività Distribuzione gruppo di risorse di Azure .
L'attività fa riferimento all'artefatto creato con l'attività Copia file e le variabili della pipeline. Impostare questi valori durante la configurazione dell'attività.
- Ambito di distribuzione (deploymentScope): Impostare l'ambito di distribuzione su
Resource Group
. La distribuzione può essere destinata a un gruppo di gestione, una sottoscrizione di Azure o un gruppo di risorse. - Connessione di Azure Resource Manager (azureResourceManagerConnection): selezionare la connessione al servizio Resource Manager di Azure. Per configurare una nuova connessione al servizio, selezionare la sottoscrizione di Azure dall'elenco e fare clic su Autorizza. Per altre informazioni, vedere Connettersi a Microsoft Azure
- Sottoscrizione (subscriptionId): selezionare la sottoscrizione in cui passare la distribuzione.
- Azione (azione): impostare su per
Create or update resource group
creare un nuovo gruppo di risorse o per aggiornare uno esistente. - Gruppo di risorse: impostare su per assegnare un
ARMPipelinesLAMP-rg
nome al nuovo gruppo di risorse. Se si tratta di un gruppo di risorse esistente, verrà aggiornato. - Location(location): percorso per la distribuzione del gruppo di risorse. Impostare sulla posizione più vicina (ad esempio, Stati Uniti occidentali). Se il gruppo di risorse esiste già nella sottoscrizione, questo valore verrà ignorato.
- Percorso modello (templateLocation): Impostare su
Linked artifact
. Si tratta del percorso del modello e dei file di parametri. - Modello (csmFile): impostare su
$(Build.ArtifactStagingDirectory)/azuredeploy.json
. Si tratta del percorso del modello di Resource Manager. - Parametri del modello (csmParametersFile): Impostare su
$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json
. Si tratta del percorso del file di parametri per il modello di Resource Manager. - Eseguire l'override dei parametri del modello (overrideParameters): impostare su per
-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)
usare le variabili create in precedenza. Questi valori sostituiranno i parametri impostati nel file dei parametri del modello. - Modalità di distribuzione (deploymentMode): modalità di distribuzione delle risorse. Impostare su
Incremental
. Incrementale mantiene le risorse che non sono nel modello di Resource Manager ed è più veloce diComplete
.Validate
la modalità consente di trovare problemi con il modello prima della distribuzione.
variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest' steps: - task: CopyFiles@2 inputs: SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: AzureResourceManagerTemplateDeployment@3 inputs: deploymentScope: 'Resource Group' azureResourceManagerConnection: '<your-resource-manager-connection>' subscriptionId: '<your-subscription-id>' action: 'Create Or Update Resource Group' resourceGroupName: 'ARMPipelinesLAMP-rg' location: '<your-closest-location>' templateLocation: 'Linked artifact' csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json' csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json' overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)' deploymentMode: 'Incremental'
- Ambito di distribuzione (deploymentScope): Impostare l'ambito di distribuzione su
Fare clic su Salva ed eseguire per distribuire il modello. Il processo della pipeline verrà avviato e dopo alcuni minuti, a seconda dell'agente, lo stato del processo deve indicare
Success
.
Esaminare le risorse distribuite
Verificare che le risorse siano distribuite. Passare al
ARMPipelinesLAMP-rg
gruppo di risorse nel portale di Azure e verificare che siano visualizzate servizio app, piano servizio app e risorse del server Database di Azure per MySQL.È anche possibile verificare le risorse usando l'interfaccia della riga di comando di Azure.
az resource list --resource-group ARMPipelinesLAMP-rg --output table
Passare al nuovo sito. Se si imposta su
siteName
armpipelinetestsite
, il sito si trova inhttps://armpipelinetestsite.azurewebsites.net/
.
Pulire le risorse
È anche possibile usare un modello di Resource Manager per eliminare le risorse. Modificare il valore nell'attività action
Distribuzione gruppo di risorse di Azure in DeleteRG
. È anche possibile rimuovere gli input per templateLocation
, , csmFile
csmParametersFile
, overrideParameters
e deploymentMode
.
variables:
ARM_PASS: $(adminPass)
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps:
- task: CopyFiles@2
inputs:
SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: '<your-resource-manager-connection>'
subscriptionId: '<your-subscription-id>'
action: 'DeleteRG'
resourceGroupName: 'ARMPipelinesLAMP-rg'
location: ''<your-closest-location>'
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per