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

resource "<proveïdor>_<tipus>" "<nom>" {
  # Arguments del 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

  1. Instal·la Terraform si encara no ho has fet.
  2. Configura les teves credencials d'AWS.
  3. 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"
  }
}
  1. Executa els següents comandos per desplegar la instància:
terraform init
terraform apply

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.

© Copyright 2024. Tots els drets reservats