Introducció
Terraform és una eina d'infraestructura com a codi (IaC) desenvolupada per HashiCorp. Permet als usuaris definir i proporcionar infraestructura de manera segura i eficient utilitzant un llenguatge de configuració declaratiu anomenat HashiCorp Configuration Language (HCL). Amb Terraform, pots gestionar recursos de diversos proveïdors de serveis en el núvol, com AWS, Azure, Google Cloud Platform, i molts altres, des d'un sol lloc.
Conceptes Clau
Infraestructura com a Codi (IaC)
- Definició: IaC és la pràctica de gestionar i proporcionar la infraestructura mitjançant fitxers de configuració llegibles per màquines, en lloc de fer-ho manualment.
- Beneficis:
- Consistència: Redueix errors humans i assegura que la infraestructura es desplega de manera consistent.
- Versionat: Permet versionar la infraestructura de la mateixa manera que el codi de l'aplicació.
- Automatització: Facilita l'automatització del desplegament i la gestió de la infraestructura.
Declaratiu vs Imperatiu
- Declaratiu: Amb Terraform, defines què vols que sigui l'estat final de la teva infraestructura, i Terraform s'encarrega de fer els canvis necessaris per arribar a aquest estat.
- Imperatiu: En altres eines, has de definir els passos exactes per arribar a l'estat desitjat.
Proveïdors
- Definició: Els proveïdors són responsables de la interacció amb les API dels serveis en el núvol i altres plataformes. Cada proveïdor té el seu propi conjunt de recursos que pot gestionar.
- Exemples: AWS, Azure, Google Cloud Platform, Kubernetes, etc.
Com Funciona Terraform?
Fitxers de Configuració
- HCL: Terraform utilitza HCL per definir la infraestructura. Els fitxers de configuració tenen l'extensió
.tf
. - Exemple:
provider "aws" { region = "us-west-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" }
Cicle de Vida de Terraform
- Escriure: Defineix la infraestructura en fitxers de configuració.
- Planificar: Utilitza
terraform plan
per veure quins canvis es faran a la infraestructura. - Aplicar: Utilitza
terraform apply
per fer els canvis a la infraestructura. - Destruir: Utilitza
terraform destroy
per eliminar la infraestructura creada.
Estat de Terraform
- Definició: Terraform manté un fitxer d'estat que conté informació sobre la infraestructura gestionada.
- Funció: Aquest fitxer d'estat és utilitzat per determinar els canvis necessaris per arribar a l'estat desitjat.
Exemples Pràctics
Exemple Bàsic
- Objectiu: Crear una instància EC2 a AWS.
- Codi:
provider "aws" { region = "us-west-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" }
- Explicació:
- provider "aws": Defineix el proveïdor AWS i la regió.
- resource "aws_instance" "example": Defineix una instància EC2 amb l'AMI especificada i el tipus d'instància.
Exercici Pràctic
- Objectiu: Crear una instància EC2 a AWS.
- Passos:
- Instal·la Terraform (veure el següent tema del curs).
- Crea un fitxer
main.tf
amb el codi de l'exemple bàsic. - Executa
terraform init
per inicialitzar el directori de treball. - Executa
terraform plan
per veure el pla d'execució. - Executa
terraform apply
per crear la instància EC2. - Executa
terraform destroy
per eliminar la instància EC2.
Conclusió
Terraform és una eina poderosa per gestionar la infraestructura com a codi. La seva capacitat per treballar amb múltiples proveïdors i la seva naturalesa declarativa la fan una opció excel·lent per a la gestió d'infraestructura moderna. En els següents temes, explorarem com instal·lar Terraform i començar a treballar amb configuracions bàsiques.
Curs de Terraform
Mòdul 1: Introducció a Terraform
- Què és Terraform?
- Instal·lant Terraform
- Conceptes bàsics de Terraform
- Primera configuració de Terraform
Mòdul 2: Llenguatge de configuració de Terraform
Mòdul 3: Gestió de l'estat
Mòdul 4: Mòduls de Terraform
Mòdul 5: Proveïment de recursos
- Conceptes bàsics de proveïment
- Proveïment de recursos AWS
- Proveïment de recursos Azure
- Proveïment de recursos GCP
Mòdul 6: Funcionalitats avançades de Terraform
Mòdul 7: Millors pràctiques de Terraform
- Organització del codi
- Control de versions
- Proves del codi de Terraform
- Millors pràctiques de seguretat
Mòdul 8: Terraform en CI/CD
- Integració de Terraform amb CI/CD
- Automatització de Terraform amb Jenkins
- Ús de Terraform amb GitHub Actions
- Terraform Cloud i Enterprise