This is an old revision of the document!
Folosim site-ul oficial al Terraform pentru a instala tool-ul. Găsiți toate detaliile necesare aici: https://www.terraform.io/downloads
Pentru a instala Terraform pe o mașinp cu un sistem de operare Ubuntu / Debian, folosim următoarele comenzi:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform
Pentru a verifica dacă instalarea fost efectuată cu succes, încercăm să obținem versiunea de Terraform instalată: terraform -version
Pentru a putea utiliza funcția de autocomplete cu Terraform: terraform -install-autocomplete
În laboratorul curent o să folosim Terraform împreună cu Docker, cu care suntem deja familiari. Începem prin a crea un director nou pentru configuratia noastră:
mkdir lab4cc cd lab4cc
Creăm un fișier cu numele main.tf
și introducem următorul cod:
terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 2.13.0" } } } provider "docker" {} resource "docker_image" "nginx" { name = "nginx:latest" keep_locally = false } resource "docker_container" "nginx" { image = docker_image.nginx.latest name = "tutorial" ports { internal = 80 external = 8000 } }
Să analizăm pe rând fiecare bloc de cod introdus:
terraform {}
- conține setarile de Terraform, inclusiv provider-ul pe care urmează să îl folosim. Pentru fiecare provider, câmpul source
definește numele provider-ului. By default, Terraform folosește Terraform Registry pentru a instala un provider. Astfel, în exemplul nostru, kreuzwerker/docker
este un provider care se găsește în registrul Terraform la path-ul registry.terraform.io/kreuzwerker/docker
. Câmpul version
este opțional, dacă nu îl folosim, Terraform o să descarce by default ultima versiune disponibilă.provider {}
- un block de tipul provider conține configurările necesare pentru ca acel provider să poată fi folosit. În cazul nostru, am folosit docker
. Un provider este doar un plugin pe care Terraform îl folosește pentru a crea și pentru a gestiona resursele.resource “docker_image” “nginx”
. În acest exemplu, docker_image
este tipul de resursă, iar nginx
este numele resursei. Fiecare astfel de bloc are mai multe proprietăți, acestea diferă de la resursă la resursă. Exemplu: în laboratorul viitor o sa configurăm o mașină virtuală într-un provider de cloud unde o să folosim parametrii ca tipul de masină, hard disk, dimensiune hard disk, regiunea în care să fie deployed masina, etc.Recapitulare cod:
terraform
cu config-ul unde am specificat providerul docker
și versiunea dorită.docker
.docker_image
cu numele nginx
(numele variabilei).docker_container
cu numele nginx
. În această resursă, pentru imagine am folosit imaginea definită mai sus, iar numele container-ului este dat de câmpul name
.Pentru a pune in picioare infrastructura:
terraform init
. Urmăriți output-ul comenzii pentru a înțelege ce face această comandă.terraform fmt
terraform validate
terraform plan
. Această comandă este un dry-run, deci putem observa cum o să arate infrastructura noastră după ce o să aplicăm configurarea creată anterior. Atenție, această comandă nu modifică infrastructura.terraform apply
Pentru a observa state-ul: terraform show
Rulați comanda pentru a vedea planul. Modificarea este facută in-place?
Ștergere infrastructură - rulați comanda terraform destroy
Avem următorul fișier outputs.tf
, unde avem acest bloc:
output "Lab" { value="lab4 first output" }
Am creat primul output în Terraform. Pentru a observa comportamentul, urmați pașii din exercițiul anterior pentru a “aplica” infrastructura.
Avem acest bloc cu următorul cod:
variable "LabCCTerraform" { description = "primul lab in terraform" default = "valoare default a primului lab in terraform" }
Aplicați planul și observați comportamentul.
Un alt mod de a seta variabile în Terraform este prin variabile de mediu. By default, Terraform caută variabilele de mediu care încep cu F_VAR_
. De exemplu, o variabilă de mediu cu numele TF_VAR_MYTESTVAR=myvalue
o să atribuie valoarea myvalue unei variabile cu numele MYTESTVAR
. Variabila cu numele MYTESTVAR
trebuie sa fie totuși declarată in configurația noastră de Terraform.
export TF_VAR_LabCCTerraform=“Value from environment”
terraform apply
pentru a observa comportamentul.