Els mòduls són una característica fonamental de Terraform que permeten organitzar i reutilitzar el codi de manera eficient. En aquest tema, aprendrem què són els mòduls, per què són importants i com podem utilitzar-los per millorar la nostra infraestructura com a codi (IaC).

Què és un mòdul?

Un mòdul en Terraform és un conjunt de fitxers de configuració que es poden reutilitzar en diferents parts del teu projecte o en diferents projectes. Els mòduls permeten encapsular recursos i lògica de configuració, facilitant la seva reutilització i manteniment.

Beneficis dels mòduls

  1. Reutilització del codi: Els mòduls permeten definir una vegada i reutilitzar múltiples vegades.
  2. Organització: Faciliten l'organització del codi en components lògics.
  3. Mantenibilitat: Simplifiquen les actualitzacions i el manteniment del codi.
  4. Col·laboració: Faciliten la col·laboració entre equips, ja que els mòduls poden ser compartits i versionats.

Estructura d'un mòdul

Un mòdul típic de Terraform consta de diversos fitxers, però els més comuns són:

  • main.tf: Conté la configuració principal del mòdul.
  • variables.tf: Defineix les variables d'entrada del mòdul.
  • outputs.tf: Defineix les sortides del mòdul.

Exemple d'estructura de mòdul

my-module/
├── main.tf
├── variables.tf
└── outputs.tf

Creació d'un mòdul senzill

A continuació, crearem un mòdul senzill que desplega una instància d'EC2 a AWS.

Pas 1: Definir la configuració principal (main.tf)

# main.tf
provider "aws" {
  region = var.region
}

resource "aws_instance" "example" {
  ami           = var.ami
  instance_type = var.instance_type

  tags = {
    Name = "ExampleInstance"
  }
}

Pas 2: Definir les variables d'entrada (variables.tf)

# variables.tf
variable "region" {
  description = "La regió d'AWS on es desplegarà la instància"
  type        = string
}

variable "ami" {
  description = "ID de l'AMI per a la instància"
  type        = string
}

variable "instance_type" {
  description = "Tipus d'instància d'EC2"
  type        = string
}

Pas 3: Definir les sortides (outputs.tf)

# outputs.tf
output "instance_id" {
  description = "ID de la instància d'EC2"
  value       = aws_instance.example.id
}

Ús d'un mòdul

Per utilitzar el mòdul que hem creat, hem de referenciar-lo des d'una altra configuració de Terraform.

Exemple d'ús del mòdul

module "ec2_instance" {
  source        = "./my-module"
  region        = "us-west-2"
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

output "instance_id" {
  value = module.ec2_instance.instance_id
}

Exercici pràctic

Exercici 1: Crear un mòdul per a una xarxa VPC

  1. Objectiu: Crear un mòdul que desplegui una xarxa VPC amb una subxarxa pública.
  2. Requisits:
    • El mòdul ha de tenir les següents variables d'entrada: vpc_cidr, subnet_cidr, region.
    • El mòdul ha de tenir una sortida amb l'ID de la VPC.

Solució

main.tf

provider "aws" {
  region = var.region
}

resource "aws_vpc" "main" {
  cidr_block = var.vpc_cidr

  tags = {
    Name = "MainVPC"
  }
}

resource "aws_subnet" "public" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = var.subnet_cidr
  availability_zone = "us-west-2a"

  tags = {
    Name = "PublicSubnet"
  }
}

variables.tf

variable "region" {
  description = "La regió d'AWS on es desplegarà la VPC"
  type        = string
}

variable "vpc_cidr" {
  description = "CIDR block per a la VPC"
  type        = string
}

variable "subnet_cidr" {
  description = "CIDR block per a la subxarxa"
  type        = string
}

outputs.tf

output "vpc_id" {
  description = "ID de la VPC"
  value       = aws_vpc.main.id
}

Ús del mòdul

module "vpc" {
  source      = "./vpc-module"
  region      = "us-west-2"
  vpc_cidr    = "10.0.0.0/16"
  subnet_cidr = "10.0.1.0/24"
}

output "vpc_id" {
  value = module.vpc.vpc_id
}

Conclusió

Els mòduls són una eina poderosa en Terraform que permeten organitzar, reutilitzar i mantenir el codi de manera eficient. En aquest tema, hem après què són els mòduls, com crear-los i com utilitzar-los en les nostres configuracions de Terraform. En els següents temes, aprofundirem en la creació i l'ús avançat de mòduls per a infraestructures més complexes.

© Copyright 2024. Tots els drets reservats