# Terraform

> Una herramienta popular para describir infraestructura cloud en archivos y crearla.

- Nivel: Intermedio
- Temas: Cloud
- URL: https://tidbit.legios.com.ar/es/terraform/
- En inglés: [Terraform](https://tidbit.legios.com.ar/terraform/)

**Terraform** es una herramienta de infraestructura como código, creada por HashiCorp (hoy parte de IBM) y lanzada en 2014. Escribís archivos que terminan en `.tf` y dicen lo que querés, por ejemplo "un servidor de este tamaño, un bucket con este nombre, una base de datos en esta red", y Terraform habla con la nube para hacerlo realidad.

El ciclo de todos los días tiene dos comandos. `terraform plan` compara tus archivos con lo que existe y te muestra la lista de cambios que haría: crear esto, modificar aquello, borrar esto otro. `terraform apply` los ejecuta. Para saber qué existe, Terraform guarda un **archivo de estado** (state file), un registro de cada recurso que maneja; los equipos lo guardan en un lugar compartido para que dos personas no toquen lo mismo a la vez.

Su gran atractivo es que un solo lenguaje sirve para muchas plataformas. Unos plugins llamados **providers** lo conectan con AWS, Azure, Google Cloud y cientos de otros servicios, desde DNS hasta herramientas de monitoreo. En 2023 HashiCorp cambió la licencia de Terraform por una que ya no es open source, y parte de la comunidad hizo un fork llamado **OpenTofu**, que funciona casi igual.

## Una analogía

Como el plano de un arquitecto más un constructor que lo lee. Cambiás el dibujo, el constructor te dice exactamente qué paredes se levantan o se tiran, y recién cuando das el OK empieza la obra.

## Para quedarse

- Describís el resultado que querés; Terraform resuelve los pasos.
- `plan` muestra los cambios antes de que `apply` los haga.
- El archivo de estado es la memoria de Terraform sobre lo que construyó; perderlo trae problemas serios.
- OpenTofu es un fork open source que funciona casi igual.

## Para seguir leyendo

- [What is Terraform? (documentación oficial, en inglés)](https://developer.hashicorp.com/terraform/intro)
- [Terraform en Wikipedia](https://es.wikipedia.org/wiki/Terraform_(software))

## Términos relacionados

- [Infraestructura como código](https://tidbit.legios.com.ar/es/infrastructure-as-code/): Describir servidores, redes y bases de datos en archivos en vez de a clics.
- [IBM](https://tidbit.legios.com.ar/es/ibm/): Una empresa centenaria de computación que vende software, consultoría y mainframes.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Computación en la nube](https://tidbit.legios.com.ar/es/cloud-computing/): Alquilar computadoras por internet en vez de comprar las tuyas.
- [Microsoft](https://tidbit.legios.com.ar/es/microsoft/): La empresa de Windows y Office, que hoy es igual de importante como nube con Azure.
- [Google Cloud](https://tidbit.legios.com.ar/es/google-cloud/): El negocio de nube de Google: cómputo, almacenamiento, datos e IA que se pagan por uso.
- [DNS](https://tidbit.legios.com.ar/es/dns/): La agenda de internet: convierte nombres como wikipedia.org en direcciones IP.
