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.

  1. 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 tipus aws_instance amb el nom example.
  • 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ó.

  1. 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 tipus aws_ami amb el nom example.
  • 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).

  1. 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"]
}

  1. 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.

© Copyright 2024. Tots els drets reservats