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.tf
Descripció 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.tfvars
Utilitzar 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