Share via


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:

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:

Creare la pipeline e distribuire il modello

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto. Creare un progetto se non ne è già disponibile uno.

  2. Passare a Pipeline e quindi selezionare Crea pipeline.

  3. Selezionare GitHub come percorso del codice sorgente.

    Nota

    È possibile che venga reindirizzato a GitHub per accedere. In questo caso, immettere le credenziali di GitHub.

  4. 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).

  5. Quando viene visualizzata la scheda Configura, selezionare Starter pipeline.

  6. Sostituire il contenuto della pipeline con questo codice:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Creare tre variabili: siteName, administratorLogine adminPass. adminPass deve essere una variabile segreta.

    • Selezionare Variabili.
    • Usare il + segno per aggiungere tre variabili. Quando si crea adminPass, selezionare Mantieni segreto questo valore.
    • Al termine, fare clic su Salva .
    Variabile valore Segreto?
    siteName mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362!
  8. 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'
    
  9. 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)'
    
  10. 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 unARMPipelinesLAMP-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 di Complete. 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'
    
  11. 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

  1. 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.

    Risorse del modello di Resource Manager nel portale di Azure

    È anche possibile verificare le risorse usando l'interfaccia della riga di comando di Azure.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Passare al nuovo sito. Se si imposta su siteNamearmpipelinetestsite, il sito si trova in https://armpipelinetestsite.azurewebsites.net/.

Pulire le risorse

È anche possibile usare un modello di Resource Manager per eliminare le risorse. Modificare il valore nell'attività actionDistribuzione gruppo di risorse di Azure in DeleteRG. È anche possibile rimuovere gli input per templateLocation, , csmFilecsmParametersFile, overrideParameterse 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