En aquest tema, aprendrem com organitzar el codi de Terraform de manera eficient i mantenible. Una bona organització del codi és essencial per a la col·laboració en equips, la reutilització de codi i la gestió de projectes a llarg termini.
Objectius d'aprenentatge
- Comprendre la importància de l'organització del codi.
- Aprendre a estructurar els fitxers i directoris de Terraform.
- Implementar bones pràctiques per a la gestió de configuracions.
Importància de l'organització del codi
Una bona organització del codi ajuda a:
- Facilitar la col·laboració: Els membres de l'equip poden entendre i treballar amb el codi més fàcilment.
- Millorar la mantenibilitat: El codi ben organitzat és més fàcil de mantenir i actualitzar.
- Reutilització del codi: Permet reutilitzar components de codi en diferents projectes.
- Escalabilitat: Facilita l'escalabilitat del projecte a mesura que creix.
Estructura de fitxers i directoris
Estructura bàsica
Una estructura bàsica de fitxers i directoris per a un projecte de Terraform podria ser la següent:
project/
├── main.tf
├── variables.tf
├── outputs.tf
├── terraform.tfvars
└── modules/
├── module1/
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
└── module2/
├── main.tf
├── variables.tf
└── outputs.tfDescripció dels fitxers
- main.tf: Conté la configuració principal de Terraform, incloent recursos, proveïdors i altres blocs de configuració.
- variables.tf: Defineix les variables que s'utilitzaran en la configuració.
- outputs.tf: Defineix les sortides que es mostraran després de l'execució de Terraform.
- terraform.tfvars: Conté els valors de les variables definides en
variables.tf. - modules/: Directori que conté els mòduls reutilitzables.
Exemples pràctics
Exemple de main.tf
provider "aws" {
region = var.aws_region
}
resource "aws_instance" "example" {
ami = var.ami_id
instance_type = var.instance_type
tags = {
Name = "ExampleInstance"
}
}Exemple de variables.tf
variable "aws_region" {
description = "The AWS region to deploy resources in"
type = string
default = "us-west-2"
}
variable "ami_id" {
description = "The AMI ID to use for the instance"
type = string
}
variable "instance_type" {
description = "The instance type to use for the instance"
type = string
default = "t2.micro"
}Exemple de outputs.tf
Exemple de terraform.tfvars
Bones pràctiques
Utilitzar mòduls
Els mòduls permeten encapsular i reutilitzar configuracions de Terraform. Això ajuda a mantenir el codi net i organitzat.
Separar configuracions per entorn
És recomanable separar les configuracions per entorn (producció, desenvolupament, etc.) en diferents directoris.
project/
├── prod/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── terraform.tfvars
└── dev/
├── main.tf
├── variables.tf
├── outputs.tf
└── terraform.tfvarsUtilitzar fitxers de variables
Definir totes les variables en un fitxer variables.tf i els seus valors en un fitxer terraform.tfvars ajuda a mantenir el codi net i fàcil de gestionar.
Documentar el codi
Afegir comentaris i documentació al codi ajuda a altres desenvolupadors a entendre la configuració i la seva finalitat.
Exercici pràctic
Exercici
- Crea un nou projecte de Terraform amb l'estructura bàsica de fitxers i directoris.
- Defineix una configuració simple per desplegar una instància EC2 a AWS.
- Utilitza variables per a la regió, l'AMI ID i el tipus d'instància.
- Defineix una sortida per mostrar l'ID de la instància.
Solució
Estructura de fitxers
Contingut dels fitxers
main.tf
provider "aws" {
region = var.aws_region
}
resource "aws_instance" "example" {
ami = var.ami_id
instance_type = var.instance_type
tags = {
Name = "ExampleInstance"
}
}variables.tf
variable "aws_region" {
description = "The AWS region to deploy resources in"
type = string
default = "us-west-2"
}
variable "ami_id" {
description = "The AMI ID to use for the instance"
type = string
}
variable "instance_type" {
description = "The instance type to use for the instance"
type = string
default = "t2.micro"
}outputs.tf
terraform.tfvars
Resum
En aquesta secció, hem après la importància de l'organització del codi en projectes de Terraform. Hem vist com estructurar els fitxers i directoris, i hem implementat bones pràctiques per a la gestió de configuracions. A més, hem realitzat un exercici pràctic per consolidar els conceptes apresos. En el proper tema, explorarem el control de versions en projectes de 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
