En aquest tema, aprendrem els conceptes fonamentals del proveïment de recursos amb Terraform. El proveïment és el procés de crear, modificar i eliminar recursos en una infraestructura. Terraform facilita aquest procés mitjançant la seva configuració declarativa i la seva capacitat per gestionar l'estat de la infraestructura.
Objectius del tema
- Comprendre què és el proveïment de recursos.
- Aprendre a definir recursos en Terraform.
- Conèixer els diferents tipus de recursos que es poden proveir.
- Veure exemples pràctics de configuracions de recursos.
Què és el proveïment de recursos?
El proveïment de recursos és el procés de desplegar i gestionar recursos d'infraestructura com servidors, bases de dades, xarxes, etc. Amb Terraform, aquest procés es fa mitjançant fitxers de configuració que defineixen l'estat desitjat de la infraestructura.
Avantatges del proveïment amb Terraform
- Declarativitat: Definim l'estat desitjat de la infraestructura i Terraform s'encarrega de fer els canvis necessaris per aconseguir aquest estat.
- Idempotència: Executar la mateixa configuració múltiples vegades no canviarà l'estat de la infraestructura si ja està en l'estat desitjat.
- Gestió de l'estat: Terraform manté un fitxer d'estat que reflecteix l'estat actual de la infraestructura, permetent detectar i aplicar canvis de manera eficient.
Definint recursos en Terraform
Els recursos són els components bàsics de la infraestructura que es poden gestionar amb Terraform. A continuació, veurem com definir un recurs bàsic.
Sintaxi bàsica d'un recurs
- <proveïdor>: El proveïdor del recurs (per exemple,
aws
,azurerm
,google
). : El tipus de recurs (per exemple, instance
,network
,bucket
).: Un nom únic per identificar el recurs dins del fitxer de configuració.
Exemple pràctic: Creació d'una instància EC2 a AWS
provider "aws" { region = "us-west-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "ExampleInstance" } }
Explicació del codi
- provider "aws": Defineix el proveïdor AWS i la regió on es desplegaran els recursos.
- resource "aws_instance" "example": Defineix una instància EC2 amb el nom
example
.- ami: L'ID de la imatge AMI que s'utilitzarà per crear la instància.
- instance_type: El tipus d'instància (per exemple,
t2.micro
). - tags: Etiquetes per identificar la instància.
Tipus de recursos
Terraform pot gestionar una àmplia varietat de recursos. Alguns dels més comuns són:
- Instàncies de computació: Servidors virtuals, màquines virtuals.
- Emmagatzematge: Discos, volums, buckets.
- Xarxes: VPCs, subxarxes, rutes.
- Bases de dades: Instàncies de bases de dades, clústers.
- Serveis gestionats: Funcions sense servidor, serveis de missatgeria.
Exercici pràctic
Objectiu
Crear una instància EC2 a AWS amb Terraform.
Passos
- Instal·la Terraform si encara no ho has fet.
- Configura les teves credencials d'AWS.
- Crea un fitxer de configuració
main.tf
amb el següent contingut:
provider "aws" { region = "us-west-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "ExampleInstance" } }
- Executa els següents comandos per desplegar la instància:
Solució
El fitxer main.tf
hauria de contenir la configuració següent:
provider "aws" { region = "us-west-2" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "ExampleInstance" } }
Resum
En aquest tema, hem après els conceptes bàsics del proveïment de recursos amb Terraform. Hem vist com definir recursos en Terraform, els avantatges del proveïment amb Terraform i hem creat una instància EC2 a AWS com a exemple pràctic. En els següents temes, aprofundirem en el proveïment de recursos específics per a diferents proveïdors de núvol.
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