En aquest tema, aprendrem com crear mòduls a Terraform. Els mòduls són una manera de reutilitzar i organitzar el codi de Terraform, permetent una gestió més eficient i mantenible de la infraestructura.
Objectius
- Comprendre la importància dels mòduls a Terraform.
- Aprendre a estructurar un mòdul.
- Crear un mòdul bàsic.
- Utilitzar variables i sortides dins d'un mòdul.
- Implementar el mòdul en una configuració de Terraform.
Què és un mòdul?
Un mòdul a Terraform és un conjunt de fitxers de configuració que es poden reutilitzar en diferents parts de la infraestructura. Els mòduls permeten:
- Reutilitzar codi.
- Organitzar la infraestructura en components lògics.
- Facilitar la col·laboració entre equips.
Estructura d'un mòdul
Un mòdul típic de Terraform conté els següents fitxers:
main.tf
: Conté els recursos principals del mòdul.variables.tf
: Defineix les variables d'entrada del mòdul.outputs.tf
: Defineix les sortides del mòdul.README.md
: Documentació del mòdul (opcional però recomanada).
Exemple pràctic: Creació d'un mòdul bàsic
Pas 1: Crear l'estructura del mòdul
- Crea una carpeta per al mòdul, per exemple,
my_module
. - Dins de
my_module
, crea els fitxersmain.tf
,variables.tf
ioutputs.tf
.
Pas 2: Definir els recursos en main.tf
En aquest exemple, crearem un mòdul que desplega una instància d'EC2 a AWS.
# my_module/main.tf resource "aws_instance" "example" { ami = var.ami_id instance_type = var.instance_type tags = { Name = var.instance_name } }
Pas 3: Definir les variables en variables.tf
# my_module/variables.tf variable "ami_id" { description = "The AMI ID to use for the instance" type = string } variable "instance_type" { description = "The type of instance to use" type = string default = "t2.micro" } variable "instance_name" { description = "The name of the instance" type = string }
Pas 4: Definir les sortides en outputs.tf
# my_module/outputs.tf output "instance_id" { description = "The ID of the EC2 instance" value = aws_instance.example.id } output "public_ip" { description = "The public IP of the EC2 instance" value = aws_instance.example.public_ip }
Pas 5: Utilitzar el mòdul en una configuració de Terraform
Ara que hem creat el mòdul, podem utilitzar-lo en una configuració de Terraform.
# main.tf provider "aws" { region = "us-west-2" } module "ec2_instance" { source = "./my_module" ami_id = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" instance_name = "example-instance" } output "instance_id" { value = module.ec2_instance.instance_id } output "public_ip" { value = module.ec2_instance.public_ip }
Pas 6: Executar la configuració
- Inicialitza el directori de treball de Terraform:
- Aplica la configuració:
Resum
En aquest tema, hem après a crear un mòdul bàsic a Terraform. Hem vist com estructurar el mòdul, definir variables i sortides, i utilitzar el mòdul en una configuració de Terraform. Els mòduls són una eina poderosa per organitzar i reutilitzar el codi de Terraform, facilitant la gestió de la infraestructura.
Exercici pràctic
Exercici 1: Crear un mòdul per a un bucket de S3
- Crea un mòdul anomenat
s3_bucket
que desplegui un bucket de S3. - Defineix les variables necessàries per al nom del bucket i la seva configuració.
- Defineix les sortides per al nom del bucket i l'ARN del bucket.
- Utilitza el mòdul en una configuració de Terraform.
Solució
# s3_bucket/main.tf resource "aws_s3_bucket" "example" { bucket = var.bucket_name tags = { Name = var.bucket_name } } # s3_bucket/variables.tf variable "bucket_name" { description = "The name of the S3 bucket" type = string } # s3_bucket/outputs.tf output "bucket_name" { description = "The name of the S3 bucket" value = aws_s3_bucket.example.bucket } output "bucket_arn" { description = "The ARN of the S3 bucket" value = aws_s3_bucket.example.arn } # main.tf provider "aws" { region = "us-west-2" } module "s3_bucket" { source = "./s3_bucket" bucket_name = "example-bucket" } output "bucket_name" { value = module.s3_bucket.bucket_name } output "bucket_arn" { value = module.s3_bucket.bucket_arn }
Amb això, hem completat la creació i ús d'un mòdul bàsic a Terraform.
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