En aquesta secció, aprendrem els conceptes fonamentals de Terraform, una eina d'infraestructura com a codi (IaC) que permet definir i proporcionar infraestructura a través de fitxers de configuració. Aquests conceptes són essencials per comprendre com funciona Terraform i com utilitzar-lo de manera efectiva.

  1. Què és Terraform?

Terraform és una eina de codi obert desenvolupada per HashiCorp que permet definir, proporcionar i gestionar la infraestructura a través de fitxers de configuració. Utilitza un llenguatge de configuració anomenat HCL (HashiCorp Configuration Language) per descriure els recursos d'infraestructura.

Característiques clau de Terraform:

  • Declaratiu: Especifica l'estat desitjat de la infraestructura, i Terraform s'encarrega de fer els canvis necessaris per aconseguir aquest estat.
  • Proveïdors: Suporta una àmplia gamma de proveïdors de serveis en el núvol, com AWS, Azure, GCP, i molts altres.
  • Infraestructura com a codi: Permet versionar i gestionar la infraestructura de la mateixa manera que el codi de programari.
  • Planificació i aplicació: Proporciona una vista prèvia dels canvis abans d'aplicar-los, permetent una gestió més segura i controlada.

  1. Components principals de Terraform

2.1. Fitxers de configuració

Els fitxers de configuració de Terraform tenen l'extensió .tf i contenen la definició de la infraestructura. Aquests fitxers es poden versionar i compartir.

2.2. Proveïdors

Els proveïdors són responsables de la interacció amb les API dels serveis en el núvol. Cada proveïdor té els seus propis recursos i dades que es poden gestionar amb Terraform.

2.3. Recursos

Els recursos són els components bàsics de la infraestructura, com instàncies de màquines virtuals, xarxes, bases de dades, etc. Cada recurs té un tipus i un conjunt d'atributs.

2.4. Estat

Terraform manté un fitxer d'estat que registra l'estat actual de la infraestructura. Aquest fitxer és essencial per a la planificació i aplicació de canvis.

  1. Flux de treball de Terraform

El flux de treball típic de Terraform inclou els següents passos:

  1. Escriure la configuració: Crear fitxers .tf que defineixin la infraestructura desitjada.
  2. Inicialitzar el directori: Executar terraform init per inicialitzar el directori de treball i descarregar els proveïdors necessaris.
  3. Planificar els canvis: Executar terraform plan per veure una vista prèvia dels canvis que es faran a la infraestructura.
  4. Aplicar els canvis: Executar terraform apply per aplicar els canvis i provisionar la infraestructura.
  5. Gestionar l'estat: Utilitzar terraform state per gestionar el fitxer d'estat.

  1. Exemple pràctic

A continuació, veurem un exemple pràctic de configuració de Terraform per crear una instància d'EC2 a AWS.

4.1. Fitxer de configuració

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "example-instance"
  }
}

4.2. Explicació del codi

  • Proveïdor AWS: Especifica que utilitzarem AWS com a proveïdor i la regió us-west-2.
  • Recurs aws_instance: Defineix una instància d'EC2 amb l'AMI ami-0c55b159cbfafe1f0 i el tipus d'instància t2.micro. També afegeix una etiqueta amb el nom example-instance.

4.3. Passos per executar

  1. Inicialitzar el directori:

    terraform init
    
  2. Planificar els canvis:

    terraform plan
    
  3. Aplicar els canvis:

    terraform apply
    
  4. Destruir la infraestructura (opcional):

    terraform destroy
    

  1. Exercicis pràctics

Exercici 1: Crear una instància d'EC2

  1. Escriu una configuració de Terraform per crear una instància d'EC2 a AWS amb les següents especificacions:

    • AMI: ami-0c55b159cbfafe1f0
    • Tipus d'instància: t2.micro
    • Etiqueta: Name = "my-instance"
  2. Inicialitza el directori, planifica els canvis i aplica'ls.

Solució:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "my_instance" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "my-instance"
  }
}

Exercici 2: Afegir un grup de seguretat

  1. Modifica la configuració anterior per afegir un grup de seguretat que permeti el trànsit HTTP (port 80) i SSH (port 22).

Solució:

provider "aws" {
  region = "us-west-2"
}

resource "aws_security_group" "my_sg" {
  name        = "my-security-group"
  description = "Allow HTTP and SSH"

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "my_instance" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  security_groups = [aws_security_group.my_sg.name]

  tags = {
    Name = "my-instance"
  }
}

Conclusió

En aquesta secció, hem après els conceptes bàsics de Terraform, incloent-hi els components principals, el flux de treball típic i hem vist un exemple pràctic de configuració. Aquests fonaments són essencials per avançar en l'ús de Terraform i gestionar la infraestructura de manera eficient. En la següent secció, explorarem la sintaxi HCL en detall.

© Copyright 2024. Tots els drets reservats