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
- Reutilització del codi: Els mòduls permeten definir una vegada i reutilitzar múltiples vegades.
- Organització: Faciliten l'organització del codi en components lògics.
- Mantenibilitat: Simplifiquen les actualitzacions i el manteniment del codi.
- 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
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
- Objectiu: Crear un mòdul que desplegui una xarxa VPC amb una subxarxa pública.
- 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.
- El mòdul ha de tenir les següents variables d'entrada:
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
Ú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.
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