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
