Concepte cheie
Last updated
Last updated
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.
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 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ă).
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 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 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.
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.
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:
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 .