Inicio rápido: Uso de una plantilla de ARM para implementar una aplicación web de Linux en Azure

Azure DevOps Services

Empiece a trabajar con plantillas de Azure Resource Manager (plantillas de ARM) mediante la implementación de una aplicación web de Linux con MySQL. Las plantillas de ARM proporcionan una manera de guardar la configuración en el código. El uso de una plantilla de ARM es un ejemplo de infraestructura como código y una buena práctica de DevOps.

Una plantilla de Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa. En la sintaxis declarativa, se describe la implementación deseada sin escribir la secuencia de comandos de programación para crearla.

Puede usar la sintaxis de Bicep o JSON para implementar recursos de Azure. Obtenga más información sobre la diferencia entre JSON y Bicep para plantillas.

Requisitos previos

Antes de comenzar, necesitará lo siguiente:

Obtención del código

Bifurque este repositorio en GitHub:

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql

Revisión de la plantilla

La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.

La plantilla define varios recursos:

Creación de la canalización e implementación de la plantilla

  1. Inicie sesión en su organización de Azure DevOps y vaya a su proyecto. Si aún no tiene un proyecto, cree uno.

  2. Vaya a Canalizaciones y seleccione Crear canalización.

  3. Seleccione GitHub como ubicación del código fuente.

    Nota:

    Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.

  4. Cuando aparezca la lista de repositorios, seleccione yourname/azure-quickstart-templates/.

    Nota:

    Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.

  5. Cuando aparezca la pestaña Configurar, seleccione Starter pipeline.

  6. Reemplace el contenido de la canalización por este código:

    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  7. Cree tres variables: siteName, administratorLogin y adminPass. adminPass debe ser una variable secreta.

    • Seleccione Variables.
    • Use el signo + para agregar tres variables. Al crear adminPass, seleccione Mantener este valor como secreto.
    • Cuando termine, haga clic en Guardar .
    Variable Value ¿Secreto?
    siteName mytestsite No
    adminUser fabrikam No
    adminPass Fqdn:5362!
  8. Asigne la variable secreta $(adminPass) para que esté disponible en la tarea Implementación de un grupo de recursos de Azure. En la parte superior del archivo YAML, asigne $(adminPass) a $(ARM_PASS).

    variables:
      ARM_PASS: $(adminPass)
    
    trigger:
    - none
    
    pool:
      vmImage: 'ubuntu-latest'
    
  9. Agregue la tarea Copiar archivos al archivo YAML. Usará el proyecto 101-webapp-linux-managed-mysql. Para más información, consulte Compilación de una aplicación web en Linux con el repositorio de Azure Database for MySQL.

    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. Agregue y configure la tarea Implementación de un grupo de recursos de Azure.

    La tarea hace referencia tanto al artefacto que creó con la tarea Copiar archivos como a las variables de canalización. Establezca estos valores al configurar la tarea.

    • Ámbito de implementación (deploymentScope): establezca el ámbito de implementación en Resource Group. La implementación puede tener como destino un grupo de administración, una suscripción de Azure o un grupo de recursos.
    • Conexión de Azure Resource Manager (azureResourceManagerConnection): seleccione la conexión de servicio de Azure Resource Manager. Para configurar una nueva conexión de servicio, seleccione la suscripción de Azure en la lista y haga clic en Autorizar. Consulte Conexión a Microsoft Azure para más información.
    • Suscripción (subscriptionId): seleccione la suscripción en la que debe ir la implementación.
    • Acción (acción): establezca este valor en Create or update resource group para crear un nuevo grupo de recursos o para actualizar uno existente.
    • Grupo de recursos: establezca este valor en ARMPipelinesLAMP-rg para asignar un nombre al nuevo grupo de recursos. Si se trata de un grupo de recursos existente, se actualizará.
    • Ubicación (location): ubicación para implementar el grupo de recursos. Establézcala en la ubicación más cercana (por ejemplo, Oeste de EE. UU.). Si el grupo de recursos ya existe en la suscripción, se omitirá este valor.
    • Ubicación de la plantilla (templateLocation): establezca este valor en Linked artifact. Se trata de la ubicación de la plantilla y los archivos de parámetros.
    • Plantilla (csmFile): establezca este valor en $(Build.ArtifactStagingDirectory)/azuredeploy.json. Se trata de la ruta de acceso a la plantilla de ARM.
    • Parámetros de plantilla (csmParametersFile): establezca este valor en $(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json. Esta es la ruta de acceso al archivo de parámetros de la plantilla de ARM.
    • Invalidar parámetros de plantilla (overrideParameters): establezca este valor en -siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS) para usar las variables que creó anteriormente. Estos valores reemplazarán los parámetros establecidos en el archivo de parámetros de plantilla.
    • Modo de implementación (deploymentMode): la forma en que se deben implementar los recursos. Establézcalo en Incremental. Incremental mantiene los recursos que no están en la plantilla de ARM y es más rápido que Complete. El modo Validate le permite encontrar problemas con la plantilla antes de la implementación.
    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. Haga clic en Guardar y ejecutar para implementar la plantilla. El trabajo de canalización se iniciará y, después de unos minutos, dependiendo del agente, el estado del trabajo debe indicar Success.

Revisión de los recursos implementados

  1. Compruebe que los recursos se han implementado. Vaya al grupo de recursos ARMPipelinesLAMP-rg en Azure Portal y compruebe que ve App Service, el plan de App Service y los recursos del servidor de Azure Database for MySQL.

    Recursos de plantilla de ARM en Azure Portal

    También puede comprobar los recursos mediante la CLI de Azure.

    az resource list --resource-group ARMPipelinesLAMP-rg --output table
    
  2. Vaya al nuevo sitio. Si establece siteName en armpipelinetestsite, el sitio se encuentra en https://armpipelinetestsite.azurewebsites.net/.

Limpieza de recursos

También puede usar una plantilla de ARM para eliminar recursos. Cambie el valor action de la tarea Implementación de un grupo de recursos de Azure a DeleteRG. También puede quitar las entradas de templateLocation, csmFile, csmParametersFile, overrideParameters y 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>'

Pasos siguientes