Mis 5 mejores consejos para configurar Terraform

Trabajar con Terraform durante más de cinco años me ha enseñado algunas lecciones clave. Cinco prácticas fueron clave para tener una configuración de Terraform lógica y utilizable, independientemente del tamaño del equipo o la naturaleza del proyecto.

Índice

1. Conozca a su público objetivo.

Esto puede parecer obvio, pero lo he visto salir mal varias veces. Al organizar su código de Terraform, estandarizar su estructura de directorios o definir convenciones de nomenclatura, es fundamental tener en cuenta la audiencia prevista. ¿Usará su equipo estos scripts y módulos de Terraform? ¿Está subcontratando el trabajo a otro equipo? ¿Se unirá gente nueva a tu equipo tarde o temprano? ¿Estás trabajando en este proyecto por ti mismo? ¿Utilizará esta configuración en seis meses o un año o se la asignará a otra persona?

Preguntas como estas influyen en diferentes decisiones. Lo ideal es que lo tengas Estado remoto Y Bloqueo de estado independientemente del tamaño del equipo ahora o en el futuro. El estado remoto garantizará que su ordenador portátil no sea el único lugar donde funcione Terraform, y el bloqueo de estado garantizará que solo una persona cambie la infraestructura a la vez.

La convención de nomenclatura debería tener sentido para cualquier propietario de proyecto, no solo para el equipo que está escribiendo el código. Si el proyecto es para otro equipo, asegúrese de que tengan voz en la convención de nomenclatura. Si las partes interesadas no técnicas o los equipos de seguridad interna/GCR revisan el código, asegúrese de verificar la convención de nomenclatura. Además de los nombres de los activos, debe aprovechar las etiquetas de activos para resaltar cualquier clasificación de datos/requisitos de privacidad (alto, medio, bajo) para que los revisores los analicen.

2. Reutilizar. Reutilizar. Reutilizar.

El Registro de terraformación proporciona una biblioteca de módulos listos para usar para los casos de uso más comunes. Escribí sobre la extensa parametrización disponible en el módulo VPC y los grupos de seguridad. Simplemente llamar a módulos con diferentes parámetros es suficiente para manejar la mayoría, si no todos, los casos de uso potenciales. Reutilice estos formularios compartidos tanto como sea posible para evitar escribir, probar, verificar, corregir y refactorizar sin fin.

También descubrí que es beneficioso separar los módulos y los recursos según la frecuencia de uso o cambio. Por ejemplo, el andamio de infraestructura que se usa solo una vez pertenece al mismo, como la configuración de VPC, los grupos de seguridad, las tablas de enrutamiento, los puntos de enlace de VPC, etc. Pero cosas como las entradas de zonas hospedadas privadas, los grupos de ajuste de escala automático, los grupos objetivo, los balanceadores de carga, etc., pueden cambiar con cada implementación, por lo que separarlos del andamiaje único hará que las revisiones de código sean más fáciles y la depuración más rápida.

3. Sea explícito en lugar de implícito.

Hay patrones comunes en el código de Terraform que he visto que conducen a suposiciones erróneas incorporadas en el diseño. Los equipos pueden asumir que la versión de Terraform utilizada para escribir el código hoy nunca cambiará, o que los módulos externos no cambiarán, o que los proveedores que están usando no cambiarán. Estos conducen a problemas invisibles unas semanas más tarde cuando estas adicciones externas se actualizan inevitablemente.

Asegúrese de definir explícitamente las versiones siempre que sea posible: en el bloque principal de Terraform, en el bloque de proveedores, en el bloque de módulos, etc. El control de versiones garantiza que sus bibliotecas dependientes permanezcan bloqueadas para que pueda actualizar explícitamente las dependencias cuando sea necesario después de discusiones, revisiones y pruebas en profundidad.

4. Automatice en todas partes. Tu ordenador portatil. Su máquina virtual compartida. Tu CI/CD.

Aprovechar la automatización en cada etapa del proceso de implementación puede evitar problemas futuros incluso antes de que ocurran.

Use los ganchos de confirmación previa de Git para ejecutar terraform fmt Y terraform validate antes de enviar su código. Los ganchos de confirmación previa garantizan que su código tenga, como mínimo, el formato correcto y la sintaxis correcta. Verifique este archivo de confirmación previa en el repositorio y todos en su equipo pueden beneficiarse de la misma automatización. Este pequeño pero vital control de calidad al principio del proceso puede ahorrarle mucho tiempo a medida que avanza su proyecto.

Todas las herramientas de distribución modernas tienen procesos de CI. Puede usarlos para ejecutar SAST y herramientas de prueba unitaria al enviar su código a la fuente. Escribí en mi blog sobre cómo Checkov puede probar la seguridad y el cumplimiento del código Terraform y crear controles personalizados para convenciones específicas de la organización. Agregue estas herramientas de prueba unitaria a la canalización de CI para mejorar la calidad y la solidez del código.

5. Tenga un archivo README.md fantástico.

A todos nos gusta pensar que el código de Terraform se autodocumenta. Por supuesto que lo es, pero solo si su futuro equipo ya conoce las convenciones y pautas de nomenclatura de su empresa, los apretones de manos secretos, las bromas internas y cualquier otra cosa que contenga su repositorio además del código válido de Terraform. Adquiera el hábito de tener una buena README.md puede ser un gran ahorro de tiempo y mantiene a su equipo honesto al responsabilizarlos por todo lo que están explícitamente comprometidos en el LÉAME.

Como mínimo, su LÉAME debe contener los pasos para inicializar el entorno de Terraform correcto en sus estaciones de trabajo (Linux, Windows, Mac, etc.), incluida la versión de Terraform para instalar. Debe especificar las dependencias requeridas (Checkov, TerraGrunt y otras) con las versiones y cualquier alias de Linux útil que use su equipo (a algunas personas les gusta definir tff como abreviatura de terraform fmt). Sobre todo, se debe especificar la estrategia y el proceso para revisar sucursales y RP, convenciones de nomenclatura y estándares de etiquetado de recursos.

El LÉAME debe pasar una prueba simple: si un nuevo miembro se une a su equipo mañana, ¿es suficiente el LÉAME para enseñarle qué hacer y cómo hacerlo correctamente? De lo contrario, es posible que se encuentre organizando estándares interminables y organizando reuniones repetidas durante los próximos meses.

Envoltura

Después de muchos años de trabajar con Terraform, estos son mis cinco mejores conocimientos para transmitir. Siéntase libre de compartir sus mejores prácticas a continuación.

Artículos de interés

Subir