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:
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
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
- Crea un mòdul local que defineixi un bucket de S3.
- Utilitza aquest mòdul en la teva configuració principal per crear un bucket de S3.
Solució:
main.tf (mòdul)
variables.tf (mòdul)
outputs.tf (mòdul)
main.tf (configuració principal)
Exercici 2: Utilitzar un mòdul remot
- 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.
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