En aquest tema, aprendrem sobre els blocs de recursos i dades en Terraform, que són elements fonamentals per definir la infraestructura com a codi. Aquests blocs ens permeten especificar els recursos que volem crear i obtenir informació sobre els recursos existents.
- Blocs de Recursos
Els blocs de recursos són la peça clau en Terraform per definir els components de la infraestructura que volem crear, modificar o eliminar. Cada bloc de recursos especifica un tipus de recurs, com ara una instància de màquina virtual, una xarxa, una base de dades, etc.
Estructura d'un Bloc de Recursos
Un bloc de recursos té la següent estructura bàsica:
resource "<TIPUS_DE_RECURS>" "<NOM_DEL_RECURS>" { # Arguments del recurs argument1 = "valor1" argument2 = "valor2" ... }
Exemple Pràctic
A continuació, es mostra un exemple d'un bloc de recursos que crea una instància d'Amazon EC2:
resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "ExampleInstance" } }
Explicació del Codi
resource "aws_instance" "example"
: Defineix un recurs del tipusaws_instance
amb el nomexample
.ami
: Especifica l'ID de la imatge d'Amazon Machine Image (AMI) que s'utilitzarà per crear la instància.instance_type
: Defineix el tipus de la instància (en aquest cas,t2.micro
).tags
: Afegeix etiquetes a la instància per facilitar-ne la identificació.
- Blocs de Dades
Els blocs de dades s'utilitzen per obtenir informació sobre recursos existents que no volem gestionar directament amb Terraform. Aquests blocs són útils per obtenir dades que es poden utilitzar en altres parts de la configuració.
Estructura d'un Bloc de Dades
Un bloc de dades té la següent estructura bàsica:
data "<TIPUS_DE_DADA>" "<NOM_DE_LA_DADA>" { # Arguments de la dada argument1 = "valor1" argument2 = "valor2" ... }
Exemple Pràctic
A continuació, es mostra un exemple d'un bloc de dades que obté informació sobre una AMI d'Amazon EC2:
data "aws_ami" "example" { most_recent = true filter { name = "name" values = ["amzn2-ami-hvm-*-x86_64-gp2"] } owners = ["137112412989"] }
Explicació del Codi
data "aws_ami" "example"
: Defineix un bloc de dades del tipusaws_ami
amb el nomexample
.most_recent
: Indica que volem obtenir la AMI més recent que compleixi els criteris especificats.filter
: Defineix un filtre per buscar AMIs amb un nom que coincideixi amb el patróamzn2-ami-hvm-*-x86_64-gp2
.owners
: Especifica l'ID del propietari de la AMI (en aquest cas, Amazon).
- Exercicis Pràctics
Exercici 1: Crear un Bloc de Recursos
Crea un bloc de recursos per desplegar una instància d'Amazon EC2 amb les següents especificacions:
- AMI:
ami-0c55b159cbfafe1f0
- Tipus d'instància:
t2.micro
- Etiqueta:
Name = "MyInstance"
Solució
resource "aws_instance" "my_instance" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "MyInstance" } }
Exercici 2: Crear un Bloc de Dades
Crea un bloc de dades per obtenir informació sobre una AMI d'Amazon EC2 amb les següents especificacions:
- Nom de la AMI:
amzn2-ami-hvm-*-x86_64-gp2
- Propietari:
137112412989
- Obtenir la AMI més recent
Solució
data "aws_ami" "my_ami" { most_recent = true filter { name = "name" values = ["amzn2-ami-hvm-*-x86_64-gp2"] } owners = ["137112412989"] }
- Errors Comuns i Consells
Errors Comuns
- Error de Tipus de Recurs: Assegura't d'utilitzar el tipus de recurs correcte. Per exemple,
aws_instance
per a instàncies EC2. - Arguments Incorrectes: Verifica que els arguments dins dels blocs de recursos i dades siguin correctes i estiguin ben escrits.
Consells
- Utilitza Etiquetes: Afegeix etiquetes als teus recursos per facilitar-ne la gestió i identificació.
- Consulta la Documentació: Revisa la documentació oficial de Terraform per obtenir informació detallada sobre els tipus de recursos i dades disponibles.
Conclusió
En aquesta secció, hem après sobre els blocs de recursos i dades en Terraform, incloent la seva estructura, exemples pràctics i exercicis per reforçar els conceptes. Ara estem preparats per avançar al següent tema, on explorarem els proveïdors en Terraform.
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