arrow-left

All pages
gitbookPowered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Terragrunt

Infraestructura de tamaño pequeño con Terraform

Fuente: https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/small-terraformarrow-up-right

La presente integra código como ejemplo de la estructuración de la configuración para una infraestructura de tamaño pequeño, en donde no son utilizadas dependencias externas.

circle-check
  • Perfecta para comenzar y refactorizar a medida que avanzas.

  • Perfecta para módulos de recurso pequeños.

  • Bueno para módulos de infraestructura pequeños y lineares (por ejemplo, ).

  • Bueno para un número pequeño de recursos (menos de 20 o 30).

circle-exclamation

Contar con un sólo archivo de estado para todos los recursos puede hacer lento el proceso de trabajo con Terraform si el número de recursos está creciendo (considerar el uso del argumento -target para limitar el número de recursos).

terraform-aws-atlantisarrow-up-right

Terraform

Estos son los artículos de la presente sección:

Infraestructura de tamaño pequeño con Terraformchevron-right
Infraestructura de tamaño mediano con Terraformchevron-right
Infraestructura de tamaño grande con Terraformchevron-right

Ejemplos de estructura del código

hashtag
Estructuras de código de Terraform

circle-info

Estos ejemplos son presentados con AWS como proveedor pero la mayoría de los principios mostrados en los ejemplos pueden ser aplicados a otros proveedores de nube pública así como a otro tipo de proveedores (DNS, DB, Monitoring, etc).

Tipo
Descripción
Disponibilidad

hashtag
Estructuras de código de Terraform

Tipo
Descripción
Disponibilidad

Infraestructura de tamaño grande con Terraform

Fuente:

La presente integra código como ejemplo de la estructuración de la configuración para una infraestructura de tamaño grande que utiliza:

  • 2 cuentas de AWS.

  • 2 entornos separados (prod

Infraestructura de tamaño mediano con Terraform

Fuente:

La presente integra código como ejemplo de la estructuración de la configuración para una infraestructura de tamaño mediano que utiliza:

  • 2 cuentas de AWS.

  • 2 entornos separados (prod

y
stage
,
los cuales no comparten nada). Cada entorno vive en cuentas separadas de AWS.
  • Cada entorno utiliza diferentes versiones del módulo estándar de infraestructura (alb) proveniente de Registro de Terraformarrow-up-right -Terraform Registry-.

  • Cada entorno hace uso de la misma versión del módulo interno modules/network dado que es procedente de un directorio local.

  • circle-info

    En proyectos grandes como el aquí descrito, los beneficios de utilizar Terragrunt se hace palpable. Revisar Ejemplos de Estructuras de Código con Terragrunt.

    circle-check
    • Perfecta para proyectos en donde la infraestructura está separa lógicamente (cuentas separadas de AWS).

    • Buena cuando no hay necesidad de modificar recursos compartidos entre las diferentes cuentas de AWS (un entorno = una cuenta AWS = un archivo de estado).

    • Buena cuando no hay necesidad de orquestación de los cambios entre los entornos.

    • Buena cuando los recursos de infraestructura son diferentes por entorno intencionalmente y no pueden ser generalizados (por ejemplo, algunos recursos están ausentes en un entorno o en algunas regiones).

    circle-exclamation

    A medida de que el proyecto crezca, estos entornos serán más difíciles de mantener actualizados al día unos de otros. Considerar utilizar módulos de infraestructura (estándares o propios) para tareas repetibles.

    https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/large-terraformarrow-up-right
    y
    stage
    ,
    los cuales no comparten nada). Cada entorno vive en una cuenta separada de AWS.
  • Cada entorno utiliza diferentes versiones del módulo estándar de infraestructura (alb) proveniente del Registro de Terraformarrow-up-right -Terraform Registry-.

  • Cada entorno hace uso de la misma versión del módulo interno modules/network dado que es procedente de un directorio local.

  • circle-check
    • Perfecta para proyectos en donde la infraestructura está separa lógicamente (cuentas separadas de AWS).

    • Buena cuando no hay necesidad de modificar recursos compartidos entre las diferentes cuentas de AWS (un entorno = una cuenta AWS = un archivo de estado).

    • Buena cuando no hay necesidad de orquestación de los cambios entre los entornos.

    • Buena cuando los recursos de infraestructura son diferentes por entorno intencionalmente y no pueden ser generalizados (por ejemplo, algunos recursos están ausentes en un entorno o en algunas regiones).

    circle-exclamation

    A medida de que el proyecto crezca, estos entornos serán más difíciles de mantener actualizados al día unos de otros. Considerar utilizar módulos de infraestructura (estándares o propios) para tareas repetibles.

    https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraformarrow-up-right

    No Disponible

    pequeña

    Pocos recursos, sin dependencias externas. Una sola cuenta de AWS.

    Una sola región. Un sólo entorno.

    Disponible

    mediana

    Varias cuentas y entornos en AWS, módulos estándar de infraestructura utilizando Terraform.

    Disponible

    grande

    Muchas cuentas de AWS, muchas regiones, necesidad urgente de reducir el copiado y pegado, módulos de infraestructura personalizados, uso intensivo de composiciones utilizando Terraform.

    TEP (Trabajo en proceso)

    muy grande

    mediana

    Varias cuentas y entornos de AWS, módulos estándar de infraestructura, patrón de composición con Terragrunt.

    No Disponible

    grande

    Muchas cuentas de AWS, muchas regiones, urgente necesidad de reducir el copiado y pegado, módulos de infraestructura personalizados, uso intensivo de composiciones utilizando Terragrunt.

    No Disponible

    muy grande

    Varios proveedores (AWS, GCP, Azure). Despliegues multi nube utilizando Terragrunt.

    No Disponible

    Varios proveedores (AWS, GCP, Azure). Despliegues multi nube utilizando Terraform.