Implementación de plantillas de ARM mediante Acciones de GitHub

Acciones de GitHub es un conjunto de características de GitHub para automatizar los flujos de trabajo de desarrollo de software en el mismo lugar donde almacena el código y colabora en las solicitudes de incorporación de cambios y problemas.

Use la acción Implementación de plantilla de Azure Resource Manager para automatizar la implementación de una plantilla de Azure Resource Manager (plantilla de ARM) en Azure.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.

  • Una cuenta de GitHub. Si no tiene ninguna, regístrese gratis.

    • Un repositorio de GitHub para almacenar las plantillas de Resource Manager y los archivos del flujo de trabajo. Para crear uno, vea Creación de un repositorio.

Información general sobre el archivo de flujo de trabajo

Un archivo YAML (.yml) define un flujo de trabajo en la ruta de acceso /.github/workflows/ de su repositorio. En esta definición se incluyen los diversos pasos y parámetros que componen el flujo de trabajo.

El archivo tiene dos secciones:

Sección Tareas
Autenticación 1. Genere las credenciales de implementación.
Implementar 1. Implemente la plantilla de Resource Manager.

Genere las credenciales de implementación.

Cree una entidad de servicio mediante el comando az ad sp create-for-rbac de la CLI de Azure. Puede ejecutar este comando mediante Azure Cloud Shell en Azure Portal o haciendo clic en el botón Probar.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

El parámetro --json-auth está disponible en las versiones de la CLI de Azure >= 2.51.0. Las versiones anteriores a esta usan --sdk-auth con una advertencia de desuso.

En este ejemplo, reemplace los marcadores de posición por su identificador de suscripción, el nombre del grupo de recursos y el nombre de la aplicación. La salida es un objeto JSON con las credenciales de asignación de roles que proporcionan acceso a la aplicación App Service similar al siguiente. Copie este objeto JSON para más adelante.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Configuración de los secretos de GitHub

  1. En GitHub, vaya al repositorio.

  2. Vaya a Configuración en el menú de navegación.

  3. Seleccione Seguridad > Secretos y variables > Acciones.

    Screenshot of adding a secret

  4. Seleccione New repository secret (Nuevo secreto del repositorio).

  5. Pegue la salida JSON completa del comando de la CLI de Azure en el campo de valor del secreto. Asigne al secreto el nombre AZURE_CREDENTIALS.

  6. Seleccione Add secret (Agregar secreto).

Adición de la plantilla de Resource Manager

Agregue una plantilla de Resource Manager al repositorio de GitHub. Esta plantilla crea una cuenta de almacenamiento.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Puede colocar el archivo en cualquier parte del repositorio. En el ejemplo de flujo de trabajo de la sección siguiente se supone que el archivo de plantilla se denomina azuredeploy.json y se almacena en la raíz del repositorio.

Creación del flujo de trabajo

El archivo de flujo de trabajo se debe almacenar en la carpeta .github/workflows en la raíz del repositorio. La extensión de archivo de flujo de trabajo puede ser .yml o .yaml.

  1. En el repositorio de GitHub, seleccione Actions (Acciones) en el menú superior.
  2. Seleccione New workflow (Nuevo flujo de trabajo).
  3. Seleccione Set up a workflow yourself (Configurar un flujo de trabajo personalmente).
  4. Cambie el nombre del archivo de flujo de trabajo si prefiere otro distinto a main.yml. Por ejemplo: deployStorageAccount.yml.
  5. Reemplace el contenido del archivo .yml por lo siguiente:
  on: [push]
  name: Azure ARM
  jobs:
    build-and-deploy:
      runs-on: ubuntu-latest
      steps:

        # Checkout code
      - uses: actions/checkout@main

        # Log into Azure
      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

        # Deploy ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

Nota:

En su lugar, puede especificar un archivo de parámetros de formato JSON en la acción de implementación de ARM (ejemplo: .azuredeploy.parameters.json).

La primera sección del archivo de flujo de trabajo incluye:

  • name: El nombre del flujo de trabajo.
  • on: el nombre de los eventos de GitHub que desencadenan el flujo de trabajo. El flujo de trabajo se desencadena cuando hay un evento de envío en la rama principal, que modifica al menos uno de los dos archivos especificados. Los dos archivos son el de trabajo y el de plantilla.
  1. Seleccione Start commit (Iniciar confirmación).
  2. Seleccione Commit directly to the main branch (Confirmar directamente en la rama principal).
  3. Seleccione Commit new file (Confirmar nuevo archivo) (o bien Commit changes (Confirmar cambios)).

Como el flujo de trabajo está configurado para que lo desencadene el archivo de flujo de trabajo o el de plantilla que se va a actualizar, el flujo de trabajo se inicia inmediatamente después de confirmar los cambios.

Comprobación del estado del flujo de trabajo

  1. Seleccione la pestaña Actions (Acciones). Verá un flujo de trabajo Create deployStorageAccount.yml en la lista. El flujo de trabajo tarda un par de minutos en ejecutarse.
  2. Seleccione el flujo de trabajo para abrirlo.
  3. Seleccione Run ARM deploy (Ejecutar implementación de ARM) en el menú para comprobar la implementación.

Limpieza de recursos

Cuando el repositorio y el grupo de recursos ya no sean necesarios, limpie los recursos que implementó eliminando el grupo de recursos y el repositorio de GitHub.

Pasos siguientes