En aquest tema, aprendrem com utilitzar mòduls en Terraform per organitzar i reutilitzar el codi de manera eficient. Els mòduls permeten agrupar recursos relacionats en unitats lògiques que es poden reutilitzar en diferents parts de la infraestructura.

Objectius

  • Comprendre què és un mòdul en Terraform.
  • Aprendre a utilitzar mòduls locals i remots.
  • Veure exemples pràctics d'ús de mòduls.
  • Realitzar exercicis pràctics per consolidar els coneixements.

Què és un mòdul en Terraform?

Un mòdul en Terraform és una col·lecció de fitxers de configuració que es poden reutilitzar. Cada mòdul té el seu propi directori que conté els fitxers .tf necessaris per definir els recursos.

Components d'un mòdul

  • 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.

Utilitzant mòduls locals

Exemple pràctic

Suposem que tenim un mòdul local que crea una instància d'EC2 a AWS. La estructura del mòdul seria la següent:

modules/
└── ec2_instance/
    ├── main.tf
    ├── variables.tf
    └── outputs.tf

main.tf

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

  tags = {
    Name = var.instance_name
  }
}

variables.tf

variable "ami" {
  description = "The AMI to use for the instance"
  type        = string
}

variable "instance_type" {
  description = "The type of instance to use"
  type        = string
}

variable "instance_name" {
  description = "The name of the instance"
  type        = string
}

outputs.tf

output "instance_id" {
  description = "The ID of the EC2 instance"
  value       = aws_instance.example.id
}

Utilitzant el mòdul en la configuració principal

Per utilitzar aquest mòdul en la nostra configuració principal, afegim el següent codi al fitxer main.tf de la nostra configuració principal:

module "ec2_instance" {
  source        = "./modules/ec2_instance"
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  instance_name = "example-instance"
}

Utilitzant mòduls remots

Els mòduls també es poden obtenir de fonts remotes com el Registre de Mòduls de Terraform, GitHub, o altres repositoris.

Exemple pràctic

Suposem que volem utilitzar un mòdul del Registre de Mòduls de Terraform per crear una xarxa VPC a AWS. Podem fer-ho de la següent manera:

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "2.70.0"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-west-1a", "us-west-1b", "us-west-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway = true
  single_nat_gateway = true

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

Exercicis pràctics

Exercici 1: Crear un mòdul local

  1. Crea un mòdul local que defineixi un bucket de S3.
  2. Utilitza aquest mòdul en la teva configuració principal per crear un bucket de S3.

Solució:

main.tf (mòdul)

resource "aws_s3_bucket" "example" {
  bucket = var.bucket_name
  acl    = "private"
}

variables.tf (mòdul)

variable "bucket_name" {
  description = "The name of the S3 bucket"
  type        = string
}

outputs.tf (mòdul)

output "bucket_arn" {
  description = "The ARN of the S3 bucket"
  value       = aws_s3_bucket.example.arn
}

main.tf (configuració principal)

module "s3_bucket" {
  source      = "./modules/s3_bucket"
  bucket_name = "my-example-bucket"
}

Exercici 2: Utilitzar un mòdul remot

  1. Utilitza un mòdul remot del Registre de Mòduls de Terraform per crear una instància d'EC2 a AWS.

Solució:

module "ec2_instance" {
  source  = "terraform-aws-modules/ec2-instance/aws"
  version = "3.0.0"

  name           = "my-ec2-instance"
  instance_type  = "t2.micro"
  ami            = "ami-0c55b159cbfafe1f0"
  key_name       = "my-key-pair"

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

Resum

En aquest tema, hem après què són els mòduls en Terraform i com utilitzar-los per organitzar i reutilitzar el codi. Hem vist exemples pràctics d'ús de mòduls locals i remots, i hem realitzat exercicis per consolidar els coneixements. Els mòduls són una eina poderosa per mantenir el codi net i modular, facilitant la gestió de la infraestructura a gran escala.

© Copyright 2024. Tots els drets reservats