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.
Para usar acción de inicio de sesión de Azure con OIDC, debe configurar una credencial de identidad federada en una aplicación de Microsoft Entra o en una identidad administrada asignada por el usuario.
Opción 1: aplicaciones de Microsoft Entra
- Cree una aplicación de Microsoft Entra con una entidad de servicio mediante Azure Portal, la CLI de Azure o Azure PowerShell.
- Copie los valores de Id. de cliente, Id. de suscripción e Id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol adecuado a la entidad de servicio con Azure Portal, la CLI de Azureo Azure PowerShell.
- Configurar una credencial de identidad federada en una aplicación de Microsoft Entra para confiar en tokens emitidos por Acciones de GitHub en el repositorio de GitHub.
Opción 2: identidad administrada asignada por el usuario
- Creación de una identidad administrada asignada por el usuario.
- Copie los valores de Id. de cliente, Id. de suscripción e Id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol apropiado a la identidad administrada asignada por el usuario.
- Configurar una credencial de identidad federada en una identidad administrada asignada por el usuario para confiar en los tokens emitidos por Acciones de GitHub en el repositorio de GitHub.
Configuración de los secretos de GitHub
Debe especificar el identificador de cliente, el identificador de directorio (inquilino) y el identificador de suscripción en la acción de inicio de sesión. Estos valores se pueden proporcionar directamente en el flujo de trabajo o se pueden almacenar en secretos de GitHub y se puede hacer referencia a ellos en el flujo de trabajo. Guardar los valores como secretos de GitHub es la opción más segura.
En GitHub, vaya al repositorio.
Seleccione Seguridad > Secretos y variables > Acciones.
Seleccione New repository secret (Nuevo secreto del repositorio).
Nota:
Para mejorar la seguridad del flujo de trabajo en repositorios públicos, use secretos de entorno en lugar de secretos de repositorio. Si el ambiente requiere aprobación, un job no puede acceder a secretos de ambiente hasta que uno de los revisores requeridos lo apruebe.
Cree secretos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
yAZURE_SUBSCRIPTION_ID
. Copie estos valores de la aplicación de Microsoft Entra o identidad administrada asignada por el usuario para los secretos de GitHub:Secreto de GitHub Aplicación de Microsoft Entra o identidad administrada asignada por el usuario AZURE_CLIENT_ID Id. de cliente AZURE_SUBSCRIPTION_ID Id. de suscripción AZURE_TENANT_ID Id. de directorio (inquilino) Nota:
Por motivos de seguridad, se recomienda usar secretos de GitHub en lugar de pasar valores directamente al flujo de trabajo.
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.
- En el repositorio de GitHub, seleccione Actions (Acciones) en el menú superior.
- Seleccione New workflow (Nuevo flujo de trabajo).
- Seleccione Set up a workflow yourself (Configurar un flujo de trabajo personalmente).
- Cambie el nombre del archivo de flujo de trabajo si prefiere otro distinto a main.yml. Por ejemplo: deployStorageAccount.yml.
- 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.
- Seleccione Start commit (Iniciar confirmación).
- Seleccione Commit directly to the main branch (Confirmar directamente en la rama principal).
- 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
- Seleccione la pestaña Actions (Acciones). Verá un flujo de trabajo Create deployStorageAccount.yml (Crear deployStorageAccount.yml) en la lista. El flujo de trabajo tarda un par de minutos en ejecutarse.
- Seleccione el flujo de trabajo para abrirlo.
- 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.