Integración de Visual Studio Team Services con Terraform Enterprise

He trabajado como ingeniero de soluciones en HashiCorp durante aproximadamente 7 meses y una pregunta común que surge cuando hablo con los clientes sobre Terraform Enterprise (TFE) es qué sistemas de control de versiones (VCS) admitimos. En realidad, esta conversación es bastante efímera. Por lo general, encuentro que los clientes tienen múltiples proveedores de VCS y, por lo tanto, la integración con TFE es bastante sencilla. La cuestión es, ¿qué debe hacer si su organización se ha decidido por un VCS que no es compatible de forma inmediata?

La intención de este artículo es hablar sobre algunos de los flujos de trabajo que podemos usar dentro de TFE que le permitirán continuar usando su VCS de elección y aún así aprovechar todos los beneficios de TFE.

Lo primero es lo primero, analicemos algunos conceptos básicos.

<×Workspaces

Terraform implementa una construcción de espacio de trabajo que sirve para algunos propósitos. En su forma más simple, el espacio de trabajo representa una carpeta en un VCS donde almacena sus plantillas de Terraform (main.tf, variables.tf, outputs.tf, etc.). También puede ver esto como un directorio de trabajo en nuestra documentación. Los espacios de trabajo también proporcionan algunas otras características clave, como:

En general, los espacios de trabajo y la funcionalidad que brindan eliminan muchos de los dolores de cabeza que experimentan las organizaciones al administrar la infraestructura como código a escala.

Control de versiones

Este es simple. El VCS es donde almacenamos el código de su aplicación y las plantillas Terraform asociadas que se requieren para implementar su infraestructura. Cuando integramos su VCS con TFE, sabemos a dónde ir para obtener las plantillas (directorio de trabajo) cuando ponemos en cola una ejecución a través de la interfaz de usuario web o una solicitud push o pull.

Toda esta actividad la proporciona un webhook en el repositorio de VCS y la autenticación se maneja a través de oAuth.

<×Ejecuciones

Aquí es donde llegamos al extremo puntiagudo de la lanza, que son los flujos de trabajo. Ahora bien, si has visto alguno de los videos que están disponibles en nuestro canal de YouTube, notarás que todo se trata de flujos de trabajo. En TFE tenemos tres flujos de trabajo principales:

El espacio problemático

Bien, ahora que ya hemos resuelto los conceptos básicos, vayamos al extremo comercial de resolver nuestro problema. ¡Ingrese a la humilde API de TFE!

La solución que describiré a continuación es algo que utilicé con una institución de servicios financieros que tiene una estrategia de múltiples nubes. Mi cliente ya había invertido mucho en plantillas VSTS, PowerShell y ARM al implementar en Azure. Uno de los casos de uso principales fue mostrar que pueden continuar usando VSTS para CICD pero entregarlo a Terraform Enterprise para que maneje el aprovisionamiento de recursos. Inicialmente, la prueba de concepto (PoC) estaba destinada a probar el flujo de trabajo de Microsoft Azure, pero desde entonces ha evolucionado para incluir AWS, GCP y VMWare en las instalaciones. Toda la integración de la API se administra a través de PowerShell y la ejecución es manejada por VSTS. Hay un par de razones por las que hicimos esto, a saber:

<”Requisitos previos

Para probar esto usted mismo, necesitará algunas cosas:

¡Hora de demostración!

Entonces, veamos cómo se ve este flujo de trabajo en acción. En la siguiente demostración, mostraré la creación de un nuevo proyecto en VSTS, importaré algo de código y crearé una compilación y lanzaré una canalización con un par de variables. Finalmente, habilitaré la implementación continua en la canalización, de modo que cada vez que confirme algún código, se ejecutará y aprovisionará automáticamente un grupo de recursos y una red virtual de Azure. ¡Demasiado fácil!

<

Los flujos de trabajo en TFE brindan a los clientes mucha flexibilidad y la adopción depende en gran medida de la madurez operativa de los profesionales que consumen el servicio. Si solo está sumergiendo el dedo del pie en el agua, lo más probable es que comience en la interfaz de usuario. A medida que progrese y sus habilidades crezcan, pasará a integraciones más complejas en las que tendrá una plataforma ITSM que se comunica con una función sin servidor, es decir, una capa de automatización, que llama a Terraform, que cortará la infraestructura repetible con un solo clic. de un ratón. ¡Días felices!