- Por Valeria Di Francesco
- ·
- Publicado 03 Jun 2024
Estrategias de testing aplicadas a negocio
Cuando se trata de desarrollar software, el testing es una pieza fundamental que garantiza la calidad y la confiabilidad de un producto y puede tener..
Terraform es una infraestructura de código abierto, una herramienta de software que proporciona un flujo de trabajo CLI consistente para gestionar cientos de servicios en la nube. Terraform codifica las API de la nube en archivos de configuración declarativos. La mayoría de las veces desplegamos la infraestructura en múltiples entornos.
Necesitamos estos entornos para el desarrollo, la ejecución, las pruebas y la producción. Es muy importante escribir una configuración de Terraform sostenible y escalable que nos permita proveer la infraestructura en estos diferentes entornos. En este documento, veremos las diferentes formas de aprovisionar infraestructura en múltiples entornos. Cada una de ellas con sus ventajas y desventajas.
Cada aplicación pasa por diferentes entornos antes de ser enviada a producción. Siempre es una buena práctica tener entornos similares por razones de consistencia. Es muy fácil replicar los errores y solucionarlos fácilmente. No es fácil replicar el mismo conjunto de infraestructura en cada entorno si lo hacemos manualmente. Terraform facilita la creación de infraestructura en un entorno multi-nube.
Dado que Terraform es una herramienta de Infraestructura como código, escribes tu infraestructura en código y es muy fácil escribir de forma modular para diferentes entornos . Veremos las posibles formas de crear infraestructura en múltiples entornos en las siguientes secciones.
En este método duplicamos la misma infraestructura en cada carpeta con un valor diferente en el archivo terraform.tfvars
.
Cada carpeta representa un entorno separado y se puede tener un backend en cada carpeta también, y no hay nada en común entre estas carpetas. Podemos tener archivos outputs.tf, providers.tf, variables.tf, etc., en cada carpeta. Cuando se ejecutan los comandos de Terraform hay que navegar a la carpeta respectiva y ejecutar los tres comandos init, plan y apply.
Utilizar carpetas - Método 1
Ventajas
Podemos añadir o eliminar fácilmente recursos en cada entorno.
Los cambios en un entorno no afectan a otros entornos.
Desventajas
Duplicación de código
Si quieres cambiar el recurso, tienes que cambiarlo en todos los entornos.
En este método, mantendríamos la misma infraestructura con archivos comunes. Sin embargo, tendremos diferentes terraform.tfvars
en cada entorno. Esta forma no es ideal cuando se tiene diferente infraestructura en todos los entornos. En nuestro caso todos los recursos de infraestructura son los mismos por lo que podríamos utilizar este método.
Dado que estamos manteniendo los mismos archivos main.tf
, variables.tf
, cuando estamos ejecutando los comandos de Terraform es necesario pasar diferentes variables en función del entorno. Por ejemplo, si tenemos tres entornos, estos son los comandos que hay que ejecutar para crear la infraestructura.
1// Dev Environment\
2terraform plan --var-file="tfvars/environment/dev.tfvars"
3
4// QA Environment\
5terraform plan --var-file="tfvars/environment/qa.tfvars"
6
7// Prod Environment\
8terraform plan --var-file="tfvars/environment/prod.tfvars"
9
Utilizar carpetas - Método 2
Ventajas
No hay duplicación de código
Si quieres cambiar el recurso, no lo tienes que cambiar en todos los entornos.
Desventajas
No podemos añadir o eliminar fácilmente recursos en cada entorno
Los cambios en un entorno sí afectan a los demás entornos, ya que estamos utilizando los mismos archivos con diferentes archivos var.
Terraform comienza con un único workspace llamado default
. El workspace es especial porque es el predeterminado y no puede ser eliminado. Si nunca has utilizado explícitamente los workspaces, entonces sólo has trabajado en el workspace por default
.
Los workspaces se gestionan con el comando terraform workspace
. Hay un conjunto de comandos para los workspaces. Por ejemplo, podemos utilizar este comando terraform workspace new
para crear un nuevo workspace.
Un módulo es un contenedor de código para múltiples recursos que se utilizan en conjunto. Cada configuración de Terraform tiene al menos un módulo, conocido como módulo de raíz. Este módulo de raíz suele estar formado por los recursos definidos en los archivos que tienen la extensión .tf
en el directorio de trabajo principal.
Un módulo puede llamar a otros módulos y estos módulos llamados se convierten en módulos hijos de los módulos que llaman. Podemos poner una gran cantidad de recursos en un módulo particular que puedes utilizar en tu módulo principal de manera concisa. Podemos usar estos módulos de forma configurable para que el mismo módulo pueda ser empleado en diferentes entornos sin cambiar ningún código.
Esto es una combinación de uso de carpetas y módulos. Importamos el módulo al archivo principal y puedes pasar las respectivas variables de entrada basadas en el entorno como se muestra en la siguiente figura.
Terraform es una infraestructura de código abierto, una herramienta de software que proporciona un flujo de trabajo CLI consistente para gestionar cientos de servicios en la nube.
La mayoría de las veces desplegamos la infraestructura en múltiples entornos. Necesitamos estos entornos para el desarrollo, la ejecución, las pruebas y la producción.
Hay 4 maneras de escribir código reutilizable para diferentes entornos en Terraform.
El uso de carpetas es el más empleado de todos. Hay dos maneras de hacerlo.
Terraform comienza con un único workspace llamado default
. El workspace es especial porque es el predeterminado y también porque nunca puede ser eliminado.
Un módulo es un contenedor de múltiples recursos que se utilizan de manera conjunta. Podemos utilizar estos módulos de forma configurable para que el mismo módulo pueda ser utilizado en diferentes entornos sin cambiar ningún código.
Cuando se trata de desarrollar software, el testing es una pieza fundamental que garantiza la calidad y la confiabilidad de un producto y puede tener..
Los equipos de desarrollo de muchas organizaciones han adoptado las revisiones de código como una de sus prácticas básicas. Aunque parece algo muy..
¿Qué es la productividad de los equipos de desarrollo? ¿Existe un equilibrio entre velocidad y calidad? ¿Qué estrategias pueden emplear las..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores