Aplicación de un flujo de trabajo automatizado

Completado

En esta unidad, obtendrá información sobre las herramientas de flujos de trabajo automatizados y cómo se integran con Terraform y Azure.

Acerca de Acciones de GitHub

Como administrador de la infraestructura, necesita que los flujos de trabajo de compilación e implementación usen el mismo control de versiones que el proyecto.

Con Acciones de GitHub, puede ejecutar un proceso de integración continua y entrega continua (CI/CD) vinculado a sus repositorios de GitHub.

Con Acciones de GitHub, puede compilar, probar e implementar el código directamente desde GitHub. También puede asignar revisiones de código, administrar ramas y evaluar las prioridades de las incidencias.

Componentes de Acciones de GitHub

Vamos a describir los distintos componentes de Acciones de GitHub, tal como se muestra en el diagrama siguiente:

Diagram showing the relationship of GitHub Actions workflows to their component jobs, steps, and actions.

  • Flujo de trabajo: desencadenado por determinados eventos o actividades, un flujo de trabajo es una colección de trabajos y pasos que automatizan las tareas del ciclo de vida de desarrollo de software.
  • Trabajo: conjunto de pasos que se ejecutan en un ejecutor.
  • Paso: tarea que puede ejecutar uno o varios comandos o acciones. Cada paso se compone de acciones individuales que se ejecutan después de que se produce un evento específico, como una solicitud de incorporación de cambios.
  • Acción: comandos independientes que se pueden combinar en pasos. Se pueden combinar varios pasos para crear un trabajo. Las acciones individuales son scripts empaquetados que automatizan las tareas de desarrollo de software. Para crear un flujo de trabajo, agregue acciones a un archivo YAML en el directorio .github/workflows del repositorio de GitHub.

Una acción de GitHub de Terraform

La acción hashicorp/setup-terraform configura la CLI de Terraform en el flujo de trabajo de Acciones de GitHub con estos pasos:

  • Descarga una versión específica de la CLI de Terraform y la agrega a PATH.
  • Modifica el archivo de configuración de la CLI de Terraform con un nombre de host empresarial o en la nube de Terraform y un token de API.
  • Instala un script contenedor para encapsular las llamadas posteriores del archivo binario terraform y exponer su código de STDOUT, STDERR y de salida como resultados con el nombre stdout, stderr y exitcode respectivamente.

Autenticación de Acciones de GitHub con Azure

Terraform admite varias opciones para la autenticación con Azure:

  • Cuando se usa Terraform de manera interactiva, se recomienda autenticarse a través de una cuenta de Microsoft.
  • Cuando se usa Terraform desde el código o mediante la automatización, se recomienda autenticarse a través de una entidad de servicio de Azure.

Una entidad de servicio es una identidad creada para su uso con aplicaciones, servicios hospedados y herramientas automatizadas para acceder a los recursos de Azure.

Pasos siguientes

En la unidad siguiente, se configurará un proyecto de muestra y se usará Acciones de GitHub con Terraform para implementarlo en Azure.

Conceptos clave para las canalizaciones de Azure Pipelines nuevas

Vamos a descubrir los componentes de los que consta una canalización de Azure Pipelines.

Diagram of the key concepts and components in Azure Pipeline.

  • Un desencadenador indica a una canalización que se ejecute.
  • Una canalización consta de una o más fases. Una canalización se puede implementar en uno o varios entornos.
  • Una fase es una forma de organizar el trabajo en una canalización y cada fase puede tener uno o más trabajos.
  • Cada trabajo se ejecuta en un agente. Un trabajo también puede ser sin agente.
  • Cada agente ejecuta un trabajo, que contiene uno o más pasos.
  • Un paso puede ser una tarea o un script, y es el bloque de compilación más pequeño de una canalización.
  • Una tarea es un script previamente empaquetado que realiza una acción, como invocar una API REST o publicar un artefacto de compilación.
  • Un artefacto es una recopilación de archivos o paquetes que ha publicado una ejecución.

Sugerencia

Para obtener información más detallada sobre los diferentes componentes de una canalización y cómo usarlos, vea los vínculos que se proporcionan en la sección Resumen.

Tareas de Terraform para Azure Pipelines

Al ejecutar comandos que interactúan con Azure, como plan, apply y destroy, la tarea usará una conexión de servicio de Azure para autorizar las operaciones en la suscripción de destino. La forma recomendada de conectarse a Azure es enlazar la conexión de servicio a una entidad de serviciode Azure. Una entidad de servicio de Azure es una identidad creada para su uso con herramientas automatizadas a fin de acceder a los recursos de Azure.

En el siguiente fragmento de código YAML se usa el proveedor de Terraform azurerm de Azure Pipelines. Se especifica una conexión de servicio a través de la entrada environmentServiceNameAzureRM:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Sugerencia

Si usa azurerm como proveedor de Terraform de Azure Pipelines, también debe proporcionar una conexión de servicio y un contenedor de almacenamiento para usarlos con el estado de back-end de Terraform.

Pasar parámetros

Hay varios métodos para pasar parámetros a comandos de Terraform. Las variables proporcionan una manera cómoda de obtener los bits clave de los datos en varias partes de la canalización.

Se puede establecer una variable para una canalización de compilación siguiendo estos pasos:

  1. Vaya a la página Canalizaciones, seleccione la canalización adecuada y, después, elija Editar.
  2. Busque las Variables de esta canalización.
  3. Agregue la variable o actualícela.
  4. Para marcar la variable como secreto, seleccione Mantener este valor como secreto.
  5. Guarde la canalización.

Salida de Terraform a variables de canalización

La tarea TerraformCLI admite la ejecución del comando output de Terraform. Cuando se ejecuta la CLI, las variables de canalización se crearán a partir de cada variable de salida emitida desde el comando terraform output.

Pasos siguientes

En la unidad siguiente, configuraremos un proyecto de ejemplo y usaremos Azure Pipelines con Terraform para implementarlo en Azure.