Ejercicio: Implementación de un archivo de Bicep a partir de flujos de trabajo de GitHub

Completado

Las acciones de GitHub son similares a Azure Pipelines por naturaleza. Proporcionan una manera de automatizar el desarrollo y las implementaciones de software. En este ejercicio, aprenderás a implementar un archivo Bicep mediante una GitHub Action.

Requisitos previos

Creación de una entidad de servicio en Azure

Para implementar los recursos en Azure, deberá crear una entidad de servicio que GitHub pueda usar. Abra un terminal o use Cloud Shell en Azure Portal y escriba los siguientes comandos:

az login
az ad sp create-for-rbac --name myApp --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/Bicep --sdk-auth

Nota

No olvide reemplazar el {subscription-id} por el identificador de suscripción real.

Descripción del comando

  • az ad sp create-for-rbac: crea una entidad de servicio para el control de acceso basado en roles.
  • --nombre: Nombre del principal de servicio.
  • --rol: Asigna el contributor rol, lo que permite la administración completa de los recursos.
  • --Ámbitos: Limita el acceso a un grupo de recursos específico.
  • --sdk-auth: Genera credenciales en un formato adecuado para la autenticación del SDK.

Cuando la operación se realiza correctamente, debe generar un objeto JSON que contenga tu tenantId, subscriptionId, clientId, clientSecret y algunas propiedades adicionales, como las siguientes:

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

Tenga en cuenta este objeto, ya que deberá agregarlo a los secretos de GitHub .

Creación de un secreto de GitHub

En el repositorio de GitHub, vaya a Configuración>Secretos>Acciones. Cree un nuevo secreto llamado AZURE_CREDENTIALS y pegue todo el objeto JSON que obtuvo del paso anterior.

Cree otro secreto para el nombre del grupo de recursos con un nombre como AZURE_RG y otro para el identificador de suscripción denominado AZURE_SUBSCRIPTION.

Captura de pantalla de la página de creación y administración de secretos de GitHub.

¿Por qué usar secretos?

Los secretos de GitHub almacenan información confidencial de forma segura. Son las siguientes:

  • Encriptado: Almacenado de forma segura en GitHub.
  • No visible en los registros: Enmascarado en los registros de ejecución del flujo de trabajo.
  • Accesible en flujos de trabajo: Disponible como variables de entorno durante la ejecución del flujo de trabajo.

Creación de una acción de GitHub

Creación de un flujo de trabajo

  1. En primer lugar, vaya al repositorio y seleccione el menú Acciones . Luego, configure un flujo de trabajo para crear un flujo de trabajo vacío en el repositorio. Si lo prefiere, puede cambiar el nombre del archivo por otro nombre.

    Captura de pantalla de la creación, edición y versión preliminar de nuevos archivos de GitHub.

Definición del flujo de trabajo

  1. Reemplace el contenido del archivo por el siguiente fragmento de código:

    on: [push]
    name: Azure Resource Manager
    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 Bicep file
          - name: deploy
            uses: azure/arm-deploy@v1
            with:
              subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
              resourceGroupName: ${{ secrets.AZURE_RG }}
              template: ./main.bicep
              parameters: storagePrefix=stg
              failOnStdErr: false
    

    No dude en reemplazar el valor del storagePrefix parámetro por el suyo propio.

Descripción del flujo de trabajo

Este flujo de trabajo de acción de GitHub realiza lo siguiente:

  • Detonante: Se ejecuta automáticamente cuando se inserta código en el repositorio (on: [push]).

  • Trabajo: Define un trabajo denominado build-and-deploy que se ejecuta en un ejecutor de Ubuntu .

  • Steps:

    • Código de extracción: Usa actions/checkout@main para extraer el código del repositorio.
    • Inicie sesión en Azure: Usa azure/login@v1 para autenticarse con Azure mediante el AZURE_CREDENTIALS secreto.
    • Implemente el archivo de Bicep: Usa azure/arm-deploy@v1 para implementar la plantilla de Bicep :
      • subscriptionId: identificador de suscripción de Azure desde secretos.
      • resourceGroupName: nombre del grupo de recursos de secretos.
      • : Ruta de acceso al archivo de Bicep.
      • parameters: parámetros pasados a la plantilla de Bicep .
      • failOnStdErr: Configurar en false para no fallar en la salida de error estándar.

    Nota

    La primera parte del flujo de trabajo define el desencadenador y su nombre. El resto define un trabajo y usa algunas tareas para consultar el código, iniciar sesión en Azure e implementar el archivo de Bicep .

Confirmación del flujo de trabajo

  1. Seleccione Iniciar confirmación y escriba un título y una descripción en el cuadro de diálogo emergente. A continuación, seleccione Confirmar directamente en la rama principal, seguido de Confirmar nuevo archivo.

    Captura de pantalla de GitHub añade un nuevo archivo a la rama principal.

Supervisión del flujo de trabajo

  1. Vaya a la pestaña Acciones y seleccione la acción recién creada que se debe ejecutar.

    Captura de pantalla de la acción de GitHub en ejecución e implementación.

Comprobación de la implementación

  1. Supervise el estado y, cuando finalice el trabajo, compruebe Azure Portal para ver si se ha creado la cuenta de almacenamiento.

    Captura de pantalla de la acción de GitHub ejecutada correctamente.