

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Introducción a Terraform: orientación para expertos en AWS CDK y AWS CloudFormation
<a name="introduction"></a>

*Steven Guggenheimer, Amazon Web Services (AWS)*

*Marzo de 2024 (historial* [del documento](doc-history.md))

Si su experiencia con el aprovisionamiento de recursos en la nube se basa exclusivamente en el ámbito de AWS, es posible que tenga una experiencia limitada con las herramientas de infraestructura como código (IaC) más allá de lo convencional. [AWS Cloud Development Kit (AWS CDK)[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)](https://docs.aws.amazon.com/cdk/v2/guide/home.html) De hecho, es posible que no conozcas por completo herramientas similares, como Hashicorp Terraform. Sin embargo, cuanto más te adentres en tu viaje a la nube, más inevitable será que te encuentres con Terraform. No cabe duda de que será una ventaja para usted estar familiarizado con sus conceptos básicos.

Si bien Terraform AWS CDK, the y Terraform CloudFormation alcanzan objetivos similares y comparten muchos conceptos básicos, existen bastantes diferencias. Es posible que no estés preparado para estas diferencias si te acercas a Terraform por primera vez. Al fin AWS CDK y al cabo, todas las CloudFormation pilas se basan en uno mismo Cuentas de AWS, por lo que tienen una relación directa con la mayoría de los recursos que mantienen. Terraform no se basa en el entorno de un único proveedor de servicios en la nube. Esto le da la flexibilidad necesaria para dar soporte a varios proveedores diferentes, pero debe mantener los recursos desde una ubicación remota.

Esta guía ayuda a desmitificar los conceptos básicos de Terraform para ayudarle a afrontar cualquier desafío relacionado con la IaC que se le presente. Se centra en cómo Terraform utiliza conceptos, como proveedores, módulos y archivos de estado, para aprovisionar recursos. También contrasta los conceptos de Terraform con la forma en que AWS CDK CloudFormation realiza operaciones similares.

**nota**  
 AWS CDK Esto ayuda a los desarrolladores a implementar CloudFormation pilas mediante lenguajes de codificación programática. Después de ejecutarlo`cdk synth`, el código se convierte en CloudFormation plantillas. A partir de ese momento, el proceso es idéntico entre AWS CDK y CloudFormation. En aras de la brevedad, esta guía generalmente se refiere al proceso AWS IaC en CloudFormation términos, pero las comparaciones son igualmente adecuadas para el. AWS CDK

## CloudFormation y terminología de Terraform
<a name="cf-nshort-and-terraform-terminology"></a>

Al comparar Terraform con AWS CDK y CloudFormation, conciliar los conceptos básicos de la IaC puede resultar difícil debido a la terminología incoherente que se utiliza para describirlos. Los siguientes son estos términos y cómo se referirá a ellos en esta guía:
+ **Pila** **:* una *pila* es un iAC que se despliega en una CI/CD canalización y se puede rastrear como una sola unidad.*Aunque este término es común en Terraform CloudFormation, en realidad, no lo usa. Una pila de Terraform es un módulo raíz desplegado con todos sus módulos secundarios. Sin embargo, para evitar confusiones con el término *módulo*, en esta guía se utiliza el término *pila* para describir una implementación única para ambas herramientas.
+ **Estado***: el *estado incluye* todos los recursos rastreados actualmente y sus configuraciones actuales dentro de una pila de implementación de IaC.* Como se describe en la [Comprensión de los estados y los backends de Terraform](states-and-backends.md) sección, Terraform usa el término *estado* más que. CloudFormation Esto se debe a que el mantenimiento del estado es más visible en Terraform, pero el seguimiento y la actualización del estado son igualmente importantes para ellos. CloudFormation
+ *Archivo **iAC: un archivo** *iAC es un archivo* único que contiene la infraestructura como lenguaje de código (IaC).* CloudFormation *hace referencia a un único CloudFormation archivo como plantilla.* Sin embargo, [las plantillas](https://developer.hashicorp.com/terraform/language/expressions/strings#string-templates) [y los archivos](https://developer.hashicorp.com/terraform/language/functions/templatefile) de plantillas en Terraform son algo completamente diferente. El equivalente a una CloudFormation plantilla en Terraform se denomina archivo de *configuración*. Para minimizar la confusión en esta guía, el término *archivo o archivo* *IaC se utiliza para referirse tanto a las CloudFormation plantillas como a los archivos* de configuración de Terraform.

En la siguiente tabla se compara la terminología utilizada para Terraform CloudFormation y Terraform. La intención de esta tabla es mostrar similitudes. No se trata de one-to-one comparaciones. Cada concepto difiere al menos ligeramente entre Terraform CloudFormation y Terraform. Los conceptos se explican en profundidad en las secciones pertinentes de esta guía.


****  

| CloudFormation término | Término de Terraform | Sección de esta guía | 
| --- | --- | --- | 
| Interfaces CDK (como IBucket) | Origen de datos | [Comprensión de las fuentes de datos de Terraform](data-sources.md) | 
| Conjunto de cambios | Plan | [Descripción de los módulos de Terraform](modules.md) | 
| Funciones de condiciones | Expresiones condicionales | [Comprensión de las funciones, expresiones y metaargumentos de Terraform](functions-expressions.md) | 
| Atributo DependsOn | depends\_onmetaargumento | [Comprensión de las funciones, expresiones y metaargumentos de Terraform](functions-expressions.md) | 
| Funciones intrínsecas | Funciones | [Comprensión de las funciones, expresiones y metaargumentos de Terraform](functions-expressions.md) | 
| Módulos | Módulos | [Descripción de los módulos de Terraform](modules.md) | 
| Outputs | Valores de salida | [Comprensión de las variables, los valores locales y los resultados de Terraform](variables-locals-outputs.md) | 
| Parameters | Variables | [Comprensión de las variables, los valores locales y los resultados de Terraform](variables-locals-outputs.md) | 
| Registro | Proveedores | [Entendiendo a los proveedores de TerraformProveedores](providers.md) | 
| Plantilla | Archivo de configuración | Todos | 