En aquest tema, aprendrem a utilitzar variables i sortides en Terraform. Les variables ens permeten fer que les nostres configuracions siguin més dinàmiques i reutilitzables, mentre que les sortides ens ajuden a obtenir informació útil dels nostres recursos provisionats.

Variables

Què són les variables?

Les variables en Terraform ens permeten definir valors que poden ser reutilitzats en diferents parts de la nostra configuració. Això fa que el nostre codi sigui més modular i fàcil de mantenir.

Definició de variables

Les variables es defineixen en un fitxer .tf utilitzant el bloc variable. Aquí teniu un exemple bàsic:

variable "instance_type" {
  description = "El tipus d'instància per a la màquina virtual"
  type        = string
  default     = "t2.micro"
}

Tipus de variables

Terraform suporta diversos tipus de variables:

  • string: Una cadena de text.
  • number: Un número.
  • bool: Un valor booleà (true o false).
  • list: Una llista de valors.
  • map: Un mapa de claus i valors.

Assignació de valors a les variables

Hi ha diverses maneres d'assignar valors a les variables:

  1. Fitxer de variables: Podeu crear un fitxer terraform.tfvars o *.auto.tfvars per definir els valors de les variables.
instance_type = "t2.medium"
  1. Línia de comandes: Podeu passar valors a les variables utilitzant l'opció -var en la línia de comandes.
terraform apply -var="instance_type=t2.medium"
  1. Variables d'entorn: Podeu definir variables d'entorn amb el prefix TF_VAR_.
export TF_VAR_instance_type="t2.medium"

Exemple pràctic

Aquí teniu un exemple complet que utilitza una variable per definir el tipus d'instància d'AWS:

variable "instance_type" {
  description = "El tipus d'instància per a la màquina virtual"
  type        = string
  default     = "t2.micro"
}

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = var.instance_type
}

Sortides

Què són les sortides?

Les sortides en Terraform ens permeten exposar valors útils dels nostres recursos provisionats. Això és especialment útil quan necessitem utilitzar aquests valors en altres parts de la nostra configuració o simplement per obtenir informació després de l'execució.

Definició de sortides

Les sortides es defineixen en un fitxer .tf utilitzant el bloc output. Aquí teniu un exemple bàsic:

output "instance_id" {
  description = "L'ID de la instància AWS"
  value       = aws_instance.example.id
}

Exemple pràctic

Continuant amb l'exemple anterior, afegirem una sortida per obtenir l'ID de la instància AWS:

variable "instance_type" {
  description = "El tipus d'instància per a la màquina virtual"
  type        = string
  default     = "t2.micro"
}

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = var.instance_type
}

output "instance_id" {
  description = "L'ID de la instància AWS"
  value       = aws_instance.example.id
}

Accés a les sortides

Després d'executar terraform apply, podeu veure les sortides utilitzant el comandament terraform output:

$ terraform output
instance_id = "i-0abcd1234efgh5678"

Exercicis pràctics

Exercici 1: Definir i utilitzar una variable

  1. Creeu un fitxer variables.tf i definiu una variable per al nom de la instància.
  2. Modifiqueu la configuració de la instància per utilitzar aquesta variable.
  3. Executeu terraform apply per veure el resultat.

Exercici 2: Definir i utilitzar una sortida

  1. Afegiu una sortida per obtenir l'adreça IP pública de la instància.
  2. Executeu terraform apply i utilitzeu terraform output per veure l'adreça IP pública.

Solucions

Exercici 1

variables.tf:

variable "instance_name" {
  description = "El nom de la instància"
  type        = string
  default     = "example-instance"
}

main.tf:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  tags = {
    Name = var.instance_name
  }
}

Exercici 2

outputs.tf:

output "instance_public_ip" {
  description = "L'adreça IP pública de la instància"
  value       = aws_instance.example.public_ip
}

Conclusió

En aquest tema, hem après a utilitzar variables i sortides en Terraform per fer que les nostres configuracions siguin més dinàmiques i reutilitzables. Les variables ens permeten definir valors que poden ser reutilitzats en diferents parts de la nostra configuració, mentre que les sortides ens ajuden a obtenir informació útil dels nostres recursos provisionats. Aquests conceptes són fonamentals per escriure configuracions Terraform eficients i mantenibles.

© Copyright 2024. Tots els drets reservats