Tutorial: Integración continua de plantillas de ARM con Azure Pipelines

En el tutorial anterior, implementó una plantilla vinculada. En este tutorial, aprenderá a usar Azure Pipelines para compilar e implementar continuamente proyectos de plantillas de Azure Resource Manager (ARM).

Azure DevOps proporciona servicios para desarrolladores para apoyar a los equipos de soporte técnico a planear el trabajo, colaborar en el desarrollo de código, y compilar e implementar aplicaciones. Los desarrolladores pueden trabajar en la nube con Azure DevOps Services. Azure DevOps proporciona un conjunto integrado de características a las que puedes acceder a través de tu explorador web o cliente IDE. Azure Pipelines es una de estas características. Azure Pipelines es un servicio completo de integración continua (CI) y entrega continua (CD). Funciona con tu proveedor de Git preferido y puede implementarse en la mayoría de los servicios en la nube principales. A continuación, puedes automatizar la compilación, las pruebas y la implementación del código en Microsoft Azure, Google Cloud Platform o Amazon Web Services.

Nota:

Elige un nombre de proyecto. Al seguir el tutorial, reemplace las instancias de ARMPipelineProj por el nombre del proyecto. El nombre de este proyecto se utiliza para generar nombres de recursos. Uno de los recursos es una cuenta de almacenamiento. Los nombres de cuentas de almacenamiento deben tener entre 3 y 24 caracteres, y usar solo números y letras minúsculas. El nombre debe ser único. En la plantilla, el nombre de la cuenta de almacenamiento es el nombre del proyecto con store anexado, y el nombre del proyecto debe tener entre 3 y 11 caracteres. Por lo tanto, el nombre del proyecto debe cumplir los requisitos de nombre para la cuenta de almacenamiento y tener menos de 11 caracteres.

En este tutorial se describen las tareas siguientes:

  • Preparación de un repositorio de GitHub
  • Crear un proyecto de Azure DevOps Projects
  • Creación de una canalización de Azure
  • Comprobación de la implementación de la canalización
  • Actualización de la plantilla y reimplementación
  • Limpieza de recursos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Requisitos previos

Para completar este artículo, necesitará lo siguiente:

Preparación de un repositorio de GitHub

GitHub sirve para almacenar el código fuente del proyecto, incluidas plantillas de Resource Manager. Para otros repositorios admitidos, consulta los repositorios compatibles con Azure DevOps.

Crear un repositorio de GitHub

Si no tiene una cuenta de GitHub, consulte Requisitos previos.

  1. Inicia sesión en GitHub.

  2. Selecciona la imagen de tu cuenta en la esquina superior derecha y selecciona Los repositorios.

    Screenshot of creating a GitHub repository for Azure Resource Manager Azure DevOps Azure Pipelines.

  3. Selecciona Nuevo, un botón verde.

  4. En Nombre del repositorio, escribe el nombre del repositorio. Por ejemplo, ARMPipeline-repo. No olvide reemplazar las instancias de AzureRmPipeline por el nombre del proyecto. Puedes seleccionar Público o Privado para completar este tutorial. Luego selecciona Crear repositorio.

  5. Anota la dirección URL. La dirección URL del repositorio tiene el formato siguiente: https://github.com/[YourAccountName]/[YourRepositoryName] .

Este repositorio se conoce como repositorio remoto. Cada uno de los desarrolladores del mismo proyecto puede clonar su propio repositorio local y combinar los cambios en el repositorio remoto.

Clonar el repositorio remoto

  1. Abre Git Shell o Git Bash. Consulte Requisitos previos.

  2. Compruebe que la carpeta actual sea GitHub.

  3. Ejecute el siguiente comando:

    git clone https://github.com/[YourAccountName]/[YourGitHubRepositoryName]
    cd [YourGitHubRepositoryName]
    mkdir create_web_app
    cd create_web_app
    pwd
    

    Reemplaza [YourAccountName] por el nombre de tu cuenta de GitHub y reemplaza [YourGitHubRepositoryName] por el nombre del repositorio que creaste en el procedimiento anterior.

La carpeta create_web_app es la carpeta donde se almacena la plantilla. El comando pwd muestra la ruta de acceso de la carpeta. La ruta de acceso es donde guardas la plantilla en el siguiente procedimiento.

Descargar una plantilla de inicio rápido

En lugar de crear las plantillas, puede descargarlas y guardarlas en la carpeta create_web_app.

Tanto el nombre de carpeta como el nombre de archivo se usan tal como están en la canalización. Si cambias estos nombres, debes actualizar los nombres usados en la canalización.

Insertar la plantilla en el repositorio remoto

El archivo azuredeploy.json se ha agregado al repositorio local. A continuación, inserta la plantilla en el repositorio remoto.

  1. Abre Git Shell o Git Bash, si no está abierto.

  2. Cambie el directorio a la carpeta create_web_app en el repositorio local.

  3. Verifica que el archivo azuredeploy.json se encuentre en la carpeta.

  4. Ejecute el siguiente comando:

    git add .
    git commit -m "Add web app templates."
    git push origin main
    

    Puedes recibir una advertencia sobre LF. Puedes omitir la advertencia. main es la rama principal. Normalmente, creas una rama para cada actualización. Para simplificar el tutorial, usa directamente la rama principal.

  5. Ve al repositorio de GitHub desde un explorador. La dirección URL es https://github.com/[YourAccountName]/[YourGitHubRepository]. Verá la carpeta create_web_app y los dos archivos dentro de la carpeta.

  6. Seleccione azuredeploy.json para abrir la plantilla.

  7. Seleccione el botón Sin formato. La dirección URL empieza por https://raw.githubusercontent.com.

  8. Realice una copia de la dirección URL. Debe proporcionar este valor cuando configure la canalización más adelante en el tutorial.

Hasta ahora, ha creado un repositorio de GitHub y cargado las plantillas en el repositorio.

Crear un proyecto de DevOps

Se necesita una organización de DevOps antes de poder avanzar al procedimiento siguiente. Si no tiene una, consulte Requisitos previos.

  1. Inicie sesión en Azure DevOps.

  2. Seleccione una organización de DevOps de la izquierda y, a continuación, seleccione Nuevo proyecto. Si no tienes ningún proyecto, la página de creación de proyectos se abre automáticamente.

  3. Escriba los siguientes valores:

    Screenshot of creating an Azure DevOps project for Azure Resource Manager Azure DevOps Azure Pipelines.

    • Nombre del proyecto: escriba un nombre de proyecto. Puedes usar el nombre del proyecto elegido al principio del tutorial.
    • En Visibilidad, seleccione Privado.

    Usa el valor predeterminado para las demás propiedades.

  4. Seleccione Crear.

Crea una conexión de servicio que se use para implementar proyectos en Azure.

  1. Selecciona Configuración del proyecto de la parte inferior del menú izquierdo.

  2. Selecciona Conexiones de servicio en Canalizaciones.

  3. Seleccione Crear conexión de servicio, luego, seleccione Azure Resource Manager y, por último, Siguiente.

  4. Seleccione Entidad de servicio (automática) y, después, Siguiente.

  5. Escriba los siguientes valores:

    • Nivel de ámbito: Selecciona Suscripción.
    • Suscripción: Selecciona tu suscripción.
    • Grupo de recursos: Deje este parámetro en blanco.
    • Nombre de conexión: Escribe un nombre de conexión. Por ejemplo, ARMPipeline-conn. Anota este nombre, necesitarás el nombre al crear la canalización.
    • Conceda permiso de acceso a todas las canalizaciones. (seleccionado)
  6. Seleccione Guardar.

Crear una canalización

Hasta ahora, hemos completado las siguientes tareas. Si omites las secciones anteriores porque ya estás familiarizado con GitHub y DevOps, debes completar las tareas antes de continuar.

  • Cree un repositorio de GitHub y guarde las plantillas en la carpeta create_web_app del repositorio.
  • Crea un proyecto de DevOps y crea una conexión de servicio de Azure Resource Manager.

Para crear una canalización con un paso para implementar una plantilla:

  1. Selecciona Canalizaciones en el menú izquierdo.

  2. Seleccione el botón Crear canalización.

  3. Desde la pestaña Conectar, selecciona GitHub. Si se te piden, escribe las credenciales de GitHub y luego sigue las instrucciones. Si ves la siguiente pantalla, selecciona Only select repositories (Solo ciertos repositorios) y verifica que el repositorio esté en la lista antes de seleccionar Approve & Install (Aprobar e instalar).

    Screenshot of selecting repositories for Azure Resource Manager Azure DevOps Azure Pipelines.

  4. Desde la pestaña Seleccionar, selecciona el repositorio. El nombre predeterminado es [YourAccountName]/[YourGitHubRepositoryName].

  5. Desde la pestaña Configurar, selecciona Canalización inicial. Muestra el archivo de canalización azure-pipelines.yml con dos pasos de script.

  6. Elimine los dos pasos del script del archivo .yml.

  7. Lleve el cursor a la línea después de pasos: .

  8. Seleccione Mostrar el asistente a la derecha de la pantalla para que se abra el panel Tareas.

  9. Seleccione Implementación de plantillas de ARM.

  10. Escriba los siguientes valores:

    • DeploymentScope: (opcional) Seleccione Grupo de recursos. Para más información sobre los ámbitos, consulte Ámbitos de implementación.
    • Conexión de Azure Resource Manager: Seleccione el nombre de la conexión de servicio que creó anteriormente.
    • Suscripción: especifique el identificador de la suscripción de destino.
    • Acción: Seleccione la acción Create Or Update Resource Group que se encarga de 2 acciones: 1. crear un grupo de recursos si se proporciona un nuevo nombre de grupo de recursos; 2. implementar la plantilla especificada.
    • Grupo de recursos: Escriba un nuevo nombre para el grupo de recursos. Por ejemplo, ARMPipeline-rg.
    • Ubicación: Seleccione una ubicación para el grupo de recursos como, por ejemplo, Centro de EE. UU. .
    • Ubicación de la plantilla: seleccione la dirección URL del archivo, lo que significa que la tarea busca el archivo de plantilla mediante la dirección URL. Como relativePath se usa en la plantilla principal y relativePath solo se admite en implementaciones basadas en URI, debe usar la dirección URL aquí.
    • Vínculo de la plantilla: escriba la dirección URL que obtuvo al final de la sección Preparación de un repositorio de GitHub. Comienza con https://raw.githubusercontent.com .
    • Vínculo de parámetros de la plantilla: deje este campo en blanco. Deberá especificar los valores de parámetro en Reemplazar parámetros de plantilla.
    • Reemplazar parámetros de plantilla: Escriba -projectName [EnterAProjectName] .
    • Modo de implementación: Seleccione Incremental.
    • Nombre de implementación: Escriba DeployPipelineTemplate. Seleccione Avanzadas para poder ver Nombre de la implementación.

    Screenshot of the ARM template deployment page with required values entered for Azure DevOps Azure Pipelines.

  11. Seleccione Agregar.

    Para más información sobre la tarea, consulte Tarea de implementación del grupo de recursos de Azure y Tarea de implementación de plantillas de Azure Resource Manager.

    El archivo .yml debe ser similar a:

    Screenshot of the Review page with the new pipeline titled Review your pipeline YAML for Azure DevOps Azure Pipelines.

  12. Seleccione Guardar y ejecutar.

  13. En el panel Guardar y ejecutar, seleccione Guardar y ejecutar de nuevo. En el repositorio conectado, se guarda una copia del archivo YAML. Para ver el archivo YAML, ve al repositorio.

  14. Verifica que la canalización se haya ejecutado correctamente.

    Screenshot of Azure Resource Manager Azure DevOps Azure Pipelines YAML file.

Comprobar la implementación

  1. Inicie sesión en Azure Portal.
  2. Abra el grupo de recursos. El nombre es lo que especificaste en el archivo YAML de la canalización. Verás que se ha creado una cuenta de almacenamiento. El nombre de la cuenta de almacenamiento comienza con store.
  3. Selecciona el nombre de la cuenta de almacenamiento para abrirla.
  4. Seleccione Propiedades. Observe que el valor de Replicación es Almacenamiento con redundancia local (LRS) .

Actualizar y reimplementar

Al actualizar la plantilla e insertar los cambios en el repositorio remoto, la canalización actualiza automáticamente los recursos, en este caso, la cuenta de almacenamiento.

  1. Abra linkedStorageAccount.json desde el repositorio local en Visual Studio Code o cualquier editor de texto.

  2. Actualiza defaultValue de storageAccountType a Standard_GRS. Vea la siguiente captura de pantalla:

    Screenshot of updating the YAML file for Azure Resource Manager Azure DevOps Azure Pipelines.

  3. Guarde los cambios.

  4. Ejecuta los siguientes comandos de Git Bash o Shell para insertar los cambios en el repositorio remoto.

    git pull origin main
    git add .
    git commit -m "Update the storage account type."
    git push origin main
    

    El primer comando (pull) sincroniza el repositorio local con el repositorio remoto. El archivo YAML de la canalización se agregó únicamente al repositorio remoto. Al ejecutar el comando pull, se descarga una copia del archivo YAML en la rama local.

    El cuarto comando (push) carga el archivo linkedStorageAccount.json revisado en el repositorio remoto. Con la actualización de la rama principal del repositorio remoto, la canalización se activa de nuevo.

Para verificar los cambios, puede comprobar la propiedad de replicación de la cuenta de almacenamiento. Consulta Verify the deployment (Verificar la implementación).

Limpieza de recursos

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

  1. En Azure Portal, seleccione Grupos de recursos en el menú de la izquierda.
  2. Escriba el nombre del grupo de recursos en el campo Filtrar por nombre.
  3. Seleccione el nombre del grupo de recursos.
  4. Seleccione Eliminar grupo de recursos del menú superior.

Puede que también quieras eliminar el repositorio de GitHub y el proyecto de Azure DevOps.

Pasos siguientes

Enhorabuena, ha terminado este tutorial de implementación de plantillas de Resource Manager. Si tiene comentarios y sugerencias, háganoslo saber en la sección de comentarios. Gracias. Está listo para pasar a conceptos más avanzados sobre las plantillas. En el tutorial siguiente se explica con más detalle cómo usar la documentación de referencia de la plantilla para ayudar a definir los recursos que se van a implementar.