Els fitxers d'estat són una part fonamental de Terraform. Aquests fitxers emmagatzemen informació sobre la infraestructura gestionada per Terraform, permetent que Terraform conegui l'estat actual dels recursos. En aquesta secció, explorarem en profunditat els fitxers d'estat, la seva importància, com es gestionen i les millors pràctiques per treballar amb ells.
Què és un fitxer d'estat?
Un fitxer d'estat és un fitxer que conté un registre de tots els recursos que Terraform ha creat i està gestionant. Aquest fitxer permet a Terraform saber quins recursos existeixen, quins canvis s'han fet i quins canvis cal aplicar.
Importància dels fitxers d'estat
- Seguiment de recursos: Els fitxers d'estat permeten a Terraform mantenir un registre dels recursos que ha creat, modificat o eliminat.
- Optimització de canvis: Amb l'estat actual dels recursos, Terraform pot calcular de manera eficient els canvis necessaris per portar la infraestructura a l'estat desitjat.
- Col·laboració: Els fitxers d'estat permeten que múltiples usuaris treballin en la mateixa infraestructura de manera coordinada.
Estructura d'un fitxer d'estat
Els fitxers d'estat estan en format JSON i contenen diverses seccions clau:
- Version: La versió del fitxer d'estat.
- Terraform_version: La versió de Terraform utilitzada per crear o modificar l'estat.
- Resources: Una llista de tots els recursos gestionats per Terraform, incloent-hi els seus atributs i metadades.
Exemple d'un fitxer d'estat
{ "version": 4, "terraform_version": "1.0.0", "resources": [ { "module": "module.vpc", "mode": "managed", "type": "aws_vpc", "name": "main", "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", "instances": [ { "schema_version": 0, "attributes": { "id": "vpc-12345678", "cidr_block": "10.0.0.0/16", "tags": { "Name": "main-vpc" } } } ] } ] }
Gestió dels fitxers d'estat
Ubicació del fitxer d'estat
Per defecte, Terraform emmagatzema el fitxer d'estat en el directori de treball actual amb el nom terraform.tfstate
. També es crea un fitxer de còpia de seguretat anomenat terraform.tfstate.backup
.
Comandes relacionades amb l'estat
terraform init
: Inicialitza una configuració de treball de Terraform.terraform plan
: Compara l'estat actual amb la configuració desitjada i genera un pla d'execució.terraform apply
: Aplica els canvis necessaris per portar la infraestructura a l'estat desitjat.terraform refresh
: Actualitza l'estat actual amb la informació més recent dels proveïdors de recursos.terraform state
: Proporciona diverses subcomandes per gestionar l'estat, com aralist
,show
,mv
,rm
, etc.
Millors pràctiques per gestionar els fitxers d'estat
- Control de versions: No incloure els fitxers d'estat en el control de versions. Utilitzar un emmagatzematge remot per compartir l'estat entre equips.
- Seguretat: Protegir els fitxers d'estat, ja que poden contenir informació sensible.
- Còpies de seguretat: Mantenir còpies de seguretat regulars dels fitxers d'estat per evitar pèrdues de dades.
Exercici pràctic
Objectiu
Crear una configuració simple de Terraform que defineixi un recurs i observar com es crea i actualitza el fitxer d'estat.
Passos
-
Crear un fitxer de configuració de Terraform:
provider "aws" { region = "us-west-2" } resource "aws_s3_bucket" "example" { bucket = "my-unique-bucket-name" acl = "private" }
-
Inicialitzar la configuració:
terraform init
-
Aplicar la configuració:
terraform apply
-
Observar el fitxer d'estat:
Després d'executar
terraform apply
, obrir el fitxerterraform.tfstate
i revisar el contingut per veure com s'ha registrat el recurs S3.
Solució
Després d'executar els passos anteriors, el fitxer terraform.tfstate
hauria de contenir informació sobre el bucket S3 creat, similar a l'exemple de fitxer d'estat proporcionat anteriorment.
Conclusió
Els fitxers d'estat són essencials per al funcionament de Terraform, ja que permeten mantenir un registre dels recursos gestionats i optimitzar els canvis necessaris. És important gestionar aquests fitxers amb cura, seguint les millors pràctiques per garantir la seguretat i la col·laboració eficient entre equips.
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