Terraform – Ce este, cum funcționează și cum ne ajută să automatizăm infrastructura IT

Într-o infrastructură IT tradițională, instalarea unui server, configurarea unei rețele sau crearea unor mașini virtuale presupun deseori numeroase operațiuni manuale. Administratorul trebuie să configureze fiecare componentă, să documenteze modificările și, eventual, să repete aceleași operațiuni pentru alte servere sau locații.

În infrastructurile moderne există însă o abordare mult mai eficientă: Infrastructure as Code (IaC) – infrastructura definită și administrată prin cod.

Unul dintre cele mai cunoscute instrumente pentru această abordare este Terraform.

Terraform permite definirea infrastructurii într-un set de fișiere de configurare și apoi crearea sau modificarea automată a acesteia. Poate fi utilizat pentru infrastructuri cloud, mașini virtuale, rețele, storage și numeroase alte servicii.

Ce este Terraform?

Terraform este un instrument de Infrastructure as Code, dezvoltat de HashiCorp.

În loc să creăm manual infrastructura din diferite console de administrare, putem descrie ceea ce dorim într-un fișier.

De exemplu, putem spune:

Avem nevoie de trei servere virtuale, o rețea, un subnet și un sistem de stocare.

Terraform analizează configurația și poate crea automat resursele respective.

Practic, în loc să configurăm infrastructura exclusiv prin click-uri și operațiuni manuale, o putem descrie prin cod.


Ce înseamnă Infrastructure as Code?

Infrastructure as Code, prescurtat IaC, reprezintă administrarea infrastructurii IT folosind fișiere de configurare care pot fi versionate, verificate și reutilizate.

Putem privi acest lucru ca pe un proiect tehnic al infrastructurii.

În loc să avem doar documentație care spune:

  • Server 1 – 4 procesoare È™i 16 GB RAM;
  • Server 2 – 8 procesoare È™i 32 GB RAM;
  • ReÈ›eaua aplicaÈ›iilor – 10.10.20.0/24;
  • Serverele trebuie conectate la această reÈ›ea;

putem transforma aceste cerințe într-o configurație Terraform.

Avantajul major este că infrastructura poate fi recreată automat și într-un mod standardizat.


Cum funcționează Terraform?

Procesul poate fi simplificat astfel:

Administrator IT → Terraform → Platforma de infrastructură → Resurse

Platforma poate fi, de exemplu:

  • Microsoft Azure;
  • Amazon Web Services;
  • Google Cloud;
  • VMware;
  • Kubernetes;
  • diferite platforme de reÈ›ea sau servicii SaaS.

Terraform comunică cu aceste platforme prin intermediul unor componente numite providers.

Ce este un Terraform Provider?

Provider-ul permite Terraform să comunice cu o anumită tehnologie.

De exemplu:

Terraform + Azure Provider → Microsoft Azure

sau

Terraform + VMware Provider → VMware

Provider-ul știe ce operațiuni sunt disponibile pe platforma respectivă și cum trebuie create sau modificate resursele.


Un exemplu simplu

Să presupunem că o companie are nevoie de zece servere virtuale.

În metoda tradițională, administratorul trebuie să creeze serverele unul câte unul și să configureze:

  • procesoarele;
  • memoria;
  • storage-ul;
  • reÈ›eaua;
  • sistemul de operare;
  • diferite setări suplimentare.

Pentru zece servere, procesul poate deveni consumator de timp și predispus la erori.

Cu Terraform putem defini configurația o singură dată.

Terraform poate apoi crea automat cele zece resurse conform specificațiilor definite.

Dacă ulterior avem nevoie de încă cinci servere, modificăm configurația, iar Terraform determină ce trebuie adăugat.


Principalele comenzi Terraform

Terraform utilizează câteva comenzi importante.

terraform init

Pregătește proiectul și descarcă provider-ele și modulele necesare.

terraform plan

Probabil una dintre cele mai utile funcții.

Terraform ne arată ce intenționează să modifice înainte de efectuarea schimbărilor.

Putem vedea, de exemplu:

  • ce resurse vor fi create;
  • ce resurse vor fi modificate;
  • ce resurse ar putea fi È™terse.

Astfel, administratorul poate verifica modificările înainte de aplicarea lor.

terraform apply

Aplică modificările aprobate și creează sau actualizează infrastructura.

terraform destroy

Poate elimina resursele administrate de configurația respectivă.

Această comandă trebuie, evident, utilizată cu foarte mare atenție în mediile de producție.


Ce este Terraform State?

Terraform trebuie să știe ce infrastructură administrează și care este situația resurselor existente.

Pentru aceasta utilizează un mecanism numit State.

Fișierul de state păstrează informații despre legătura dintre configurația Terraform și resursele reale.

Într-un mediu de companie, state-ul nu ar trebui tratat ca un simplu fișier local pe laptopul administratorului.

Este recomandată utilizarea unui backend securizat și partajat, cu:

  • control al accesului;
  • criptare;
  • versionare;
  • mecanisme de blocare pentru evitarea modificărilor simultane.

De asemenea, state-ul poate conține informații sensibile și trebuie protejat corespunzător.


Care sunt avantajele Terraform?

1. Automatizarea infrastructurii

Operațiunile repetitive pot fi automatizate.

În loc să configurăm manual 20 de servere, putem defini o configurație și să permitem Terraform să creeze resursele necesare.

2. Reducerea erorilor umane

În configurările manuale este foarte ușor ca două servere care ar trebui să fie identice să ajungă să aibă configurații diferite.

Terraform ajută la standardizarea acestora.

3. Repetabilitate

Aceeași infrastructură poate fi recreată în mai multe medii.

De exemplu:

Development → Test → Production

Putem utiliza aceeași structură de bază, modificând doar parametrii necesari fiecărui mediu.

4. Documentarea infrastructurii

Codul Terraform reprezintă în același timp o descriere tehnică a infrastructurii.

Un administrator poate analiza proiectul și poate înțelege mult mai ușor cum ar trebui să arate mediul.

5. Scalabilitate

Este mult mai simplu să modificăm o configurație și să creștem numărul de resurse decât să construim manual fiecare server.


Terraform și GitHub

Aici putem face legătura directă cu articolul nostru anterior despre GitHub.

Fișierele Terraform pot fi păstrate într-un repository Git.

Astfel obținem:

Terraform + Git + automatizare

Fiecare modificare poate avea:

  • autor;
  • dată;
  • istoric;
  • comentarii;
  • aprobare.

Dacă cineva modifică infrastructura, putem vedea exact ce s-a schimbat.

Acest lucru reprezintă un avantaj major față de modificările efectuate manual într-o consolă de administrare.


Terraform și GitHub Actions

Procesul poate fi automatizat și mai mult printr-un pipeline.

De exemplu:

Administratorul modifică infrastructura

↓

Modificarea este trimisă în GitHub

↓

GitHub Actions pornește automat

↓

Terraform verifică configurația

↓

Terraform Plan arată modificările

↓

Modificarea este verificată și aprobată

↓

Terraform Apply implementează infrastructura

Acesta este un exemplu de infrastructură administrată printr-un proces modern de Continuous Integration / Continuous Delivery (CI/CD).

Pentru mediile critice, aplicarea automată trebuie controlată atent și este recomandată introducerea unor procese de aprobare înaintea modificării producției.


Terraform, Docker și Kubernetes

Terraform se integrează foarte bine și cu tehnologiile discutate în articolul nostru despre Docker și Kubernetes.

Trebuie însă să facem o diferență importantă.

Docker rulează aplicațiile în containere.

Kubernetes administrează și orchestrează containerele.

Terraform poate crea infrastructura necesară pentru ca acestea să funcționeze.

De exemplu:

Terraform

↓

creează infrastructura cloud

↓

creează rețeaua și resursele necesare

↓

creează clusterul Kubernetes

↓

Kubernetes

↓

rulează și administrează containerele

↓

Docker / container images

↓

aplicațiile companiei

Cele trei tehnologii nu sunt neapărat concurente. Ele pot lucra împreună.


Terraform și VMware

Terraform poate fi utilizat și în anumite scenarii de automatizare a infrastructurilor VMware.

Într-un mediu virtualizat putem automatiza, în funcție de provider și de capabilitățile platformei:

  • crearea maÈ™inilor virtuale;
  • selectarea datastore-urilor;
  • configurarea reÈ›elelor;
  • alegerea template-urilor;
  • alocarea procesoarelor;
  • alocarea memoriei RAM;
  • configurarea anumitor componente ale infrastructurii.

În loc să construim manual zeci de mașini virtuale, putem standardiza procesul.


Terraform și Cloud

Unul dintre domeniile în care Terraform este foarte utilizat este infrastructura Cloud.

Putem administra resurse în:

  • Microsoft Azure;
  • Amazon Web Services;
  • Google Cloud È™i alte platforme compatibile.

Putem defini:

Virtual Machines

↓

Networks

↓

Firewalls / Security Rules

↓

Load Balancers

↓

Storage

↓

Databases

↓

Kubernetes Clusters

Această abordare este foarte utilă atunci când infrastructura devine complexă.


Terraform și Ansible – sunt același lucru?

Nu. Cele două tehnologii sunt complementare.

O explicație simplificată ar fi:

Terraform construiește infrastructura.

Ansible configurează sistemele și aplicațiile.

De exemplu:

Terraform creează 10 servere Linux.

↓

Ansible se conectează la acestea.

↓

Instalează Docker.

↓

Configurează aplicațiile.

↓

Configurează serviciile necesare.

Într-o infrastructură modernă, Terraform și Ansible pot fi utilizate împreună.


Terraform în cazul unui Disaster Recovery

Infrastructure as Code poate fi foarte util și pentru Disaster Recovery, adică recuperarea infrastructurii după un incident major.

Să presupunem că o companie pierde o parte importantă a infrastructurii în urma unei defecțiuni sau a unui incident.

Dacă arhitectura infrastructurii este definită prin Terraform, o parte dintre resurse poate fi recreată mult mai rapid.

Dar există o diferență importantă:

Terraform nu înlocuiește backup-ul.

Terraform poate ajuta la recrearea infrastructurii, însă datele aplicațiilor trebuie protejate printr-o strategie separată de backup și Disaster Recovery.

Putem avea astfel:

Terraform → reconstruiește infrastructura

Backup → restaurează datele

Această combinație poate reduce semnificativ timpul necesar recuperării după un incident.


Este Terraform potrivit pentru orice companie?

Nu neapărat.

Pentru o companie cu două sau trei servere care se modifică foarte rar, introducerea Terraform poate adăuga o complexitate care nu este întotdeauna justificată.

Beneficiile devin mult mai evidente atunci când avem:

  • infrastructură Cloud;
  • numeroase servere;
  • mai multe medii;
  • infrastructură care se modifică frecvent;
  • Docker È™i Kubernetes;
  • echipe DevOps;
  • procese automate de implementare.

Prin urmare, tehnologia trebuie aleasă în funcție de necesitățile reale ale organizației.


Un exemplu de infrastructură IT modernă

Putem combina tehnologiile prezentate în ultimele articole WSIT astfel:

GitHub

stochează și versionează codul

↓

Terraform

creează infrastructura

↓

Ansible

configurează serverele

↓

Docker

containerizează aplicațiile

↓

Kubernetes

administrează containerele

↓

Grafana

monitorizează infrastructura și aplicațiile

Astfel putem construi o infrastructură mult mai automatizată, standardizată și ușor de administrat.


Concluzie

Terraform reprezintă un pas important de la administrarea manuală a infrastructurii către Infrastructure as Code și automatizare.

În loc să construim fiecare server și fiecare componentă manual, putem defini infrastructura prin cod, o putem păstra într-un sistem de versionare și o putem implementa într-un mod controlat și repetabil.

Combinat cu GitHub, Ansible, Docker, Kubernetes și Grafana, Terraform poate deveni o componentă importantă a unei infrastructuri IT moderne.

Scopul nu este doar automatizarea.

Scopul este construirea unei infrastructuri standardizate, documentate, reproductibile și mai ușor de administrat.

Cum vă poate ajuta WSIT?

WSIT poate oferi consultanță și suport pentru modernizarea și automatizarea infrastructurilor IT, inclusiv:

  • Infrastructure as Code;
  • Terraform;
  • automatizarea infrastructurilor Cloud;
  • Docker È™i Kubernetes;
  • Git È™i GitHub;
  • Ansible;
  • VMware È™i virtualizare;
  • monitorizare cu Grafana;
  • backup È™i Disaster Recovery;
  • proiectarea È™i optimizarea infrastructurii IT.

Prin combinarea acestor tehnologii, companiile pot reduce operațiunile manuale, pot standardiza configurațiile și pot utiliza mai eficient resursele infrastructurii.

De asemenea, WSIT AI Assistant poate fi utilizat pentru întrebări tehnice și informații despre automatizare, infrastructură, Terraform, Docker și Kubernetes.