Terraform Best Practices
Terraform consultingTwitter @antonbabenkoTerraform Weekly
Română (Romanian)
Română (Romanian)
  • Bine ați venit
  • Concepte cheie
  • Structura codului
  • Exemple de structuri de cod
    • Terragrunt
    • Terraform
      • Infrastructură de dimensiune mică - Terraform
      • Infrastructură de dimensiune medie - Terraform
      • Infrastructură de dimensiune mare - Terraform
  • Convenții de numire
  • Formatarea codului
  • FAQ
  • Referințe
  • Scrierea configurațiilor Terraform
  • Workshop
Powered by GitBook
On this page
  • Resurse
  • Modulul de resurse
  • Modulul de infrastructură
  • Compoziţia de infrastructură
  • Sursa de date
  • Remote state
  • Provider, provisioner, etc
  • De ce atât de dificil?
Export as PDF

Concepte cheie

PreviousBine ați venitNextStructura codului

Last updated 2 years ago

Documentația oficială pentru Terraform descrie . Citiți-o cu atenție pentru a înțelege restul capitolului.

Acest capitol descrie conceptele cheie folosite în această carte.

Resurse

Resursele sunt, de exemplu, aws_vpc, aws_db_instance, etc. O resursă aparține unui furnizor (provider), acceptă argumente, întoarce atribute și are cicluri de viață. O resursă poate fi creată, preluată, actualizată și ștearsă.

Modulul de resurse

Modulul de resurse este o colecție de resurse conectate care realizează împreună o acțiune comună (de exemplu, creează VPC, subrețele, NAT gateway etc.). Depinde de configurația furnizorului, care poate fi definită în acesta, sau în structuri de nivel superior (de exemplu, în modulul de infrastructură).

Modulul de infrastructură

Un modul de infrastructură este o colecție de module de resurse, care în mod logic nu pot fi conectate, dar în situația actuală/proiectul/setarea servesc aceluiași scop. Acesta definește configurația pentru furnizori, care este transmisă modulelor de resurse din interior și resurselor. În mod normal, este limitat să funcționeze într-o singură entitate per separator logic (de exemplu, Regiune AWS, Proiect Google).

De exemplu, modulul folosește module de resurse ca și pentru a gestiona infrastructura necesară rulării în .

Un alt exemplu este modulul unde mai multe module de sunt utilizate împreună pentru a gestiona infrastructura, precum și pentru a folosi resursele Docker pentru a face build, push, și deploy imaginilor de Docker. Toate într-un singur set.

Compoziţia de infrastructură

Compoziţia este o colecție de module de infrastructură, care se pot întinde pe mai multe zone separate logic (de exemplu, regiuni AWS, mai multe conturi AWS). Compoziţia este utilizată pentru a descrie infrastructura completă necesară pentru întreaga organizație sau întreagul proiect.

O compoziţie este constituită din module de infrastructură, care sunt constituite din module de resurse, care implementează resurse individuale.

Sursa de date

Sursa de date efectuează o operație doar de citire și depinde de configurația furnizorului, este utilizată într-un modul de resurse și într-un modul de infrastructură.

Sursa de date terraform_remote_state acționează ca o legătură între module de nivel superior și compoziții.

Remote state

Provider, provisioner, etc

Providers, provisioners, și alți câțiva termeni sunt descriși foarte bine în documentația oficială și nu are rost să repet aici. După părerea mea, au puțin de-a face cu scrierea unor module bune de Terraform.

De ce atât de dificil?

Accesul la date între molecule (module de resurse și module de infrastructură) se realizează folosind datele de ieșire ale modulelor (outputs) și sursele de date (data sources).

Când puneți conceptele descrise mai sus în pseudo-relații, acestea pot arăta astfel:

composition-1 {
  infrastructure-module-1 {
    data-source-1 => d1

    resource-module-1 {
      data-source-2 => d2
      resource-1 (d1, d2)
      resource-2 (d2)
    }

    resource-module-2 {
      data-source-3 => d3
      resource-3 (d1, d3)
      resource-4 (d3)
    }
  }

}

Sursa externă de date permite unui program extern să acționeze ca sursă de date, expunând date arbitrare pentru a fi utilizate în altă parte în configurația Terraform. Iată un exemplu din modulul în care numele fișierului este calculat prin apelarea unui script de Python extern.

Sursa de date face o solicitare HTTP GET către adresa URL dată și exportă informații despre răspuns, care sunt adesea utile pentru a obține informații de la punctele finale (endpoints) în care nu există un furnizor Terraform nativ.

Modulele de infrastructură și compozițiile ar trebui să-și păstreze într-o locație la distanță numită remote state, unde pot fi preluate de către alții într-un mod controlabil (de exemplu, specificații ACL, versionări, logging).

În timp ce resursele individuale sunt ca atomii din infrastructură, modulele de resurse sunt ca moleculele. Un modul este cea mai mică unitate versionabilă și partajabilă. Are o listă exactă de argumente, implementează logica de bază pentru ca o astfel de unitate să facă funcția necesară. De exemplu, modulul creează resursele aws_security_groupși aws_security_group_rule pe baza informației de intrare. Acest modul de resurse poate fi folosit împreună cu alte module pentru a crea modulul de infrastructură.

Accesul între compoziții se realizează adesea folosind surse de date de la distanță (remote state data sources). Există mai .

toate aspectele configurației în detaliu
modulul Terraform pentru AWS VPC
terraform-aws-atlantis
terraform-aws-vpc
terraform-aws-security-group
Atlantis
AWS Fargate
terraform-aws-cloudquery
terraform-aws-modules
terraform-aws-lambda
http
starea Terraform
terraform-aws-security-group
multe moduri de a partaja date între configurații
O compoziţie de infrastructură simplă