Infrastructură ca cod cu Terraform în Moldova

Servicii DevOps · IaC și GitOps · Moldova

Medii identice, create din același cod

Infrastructură ca cod pentru firmele din Moldova care nu mai știu exact ce s-a configurat manual pe servere anul trecut. Descriem resursele în Terraform sau OpenTofu, configurația în Ansible, iar starea dorită a aplicațiilor în Git, cu Argo CD care o aplică. Rezultatul: medii identice, modificări revizuite și reconstruire completă din cod după un incident.

  • Modificări revizuite pe pull request, nu pe SSH
  • Reconstruire completă din cod după un incident
  • VPS 1–8 h · dedicate 5–10 h (în funcție de plan), GPU 10 h
    Ore incluse lunar
  • Frankfurt (UE)
    Datacentere
  • euro, TVA 20 %, factură SFS
    Facturare
  • română și rusă
    Suport

Ce descriem în cod și ce rămâne manual

Terraform sau OpenTofu descrie resursele: servere, volume, reguli de firewall, înregistrări DNS, certificate. Ansible se ocupă de ce se întâmplă înăuntru: pachete, utilizatori, servicii, fișiere de configurare. Le folosim împreună, pentru că rezolvă probleme diferite. Nu punem în cod ce nu merită automatizat, de exemplu o intervenție unică pe o mașină care se retrage luna viitoare. Regula pe care o impunem este alta: dacă ceva trebuie să existe la fel în două medii, atunci trăiește în cod, nu în amintirea cuiva.

  • Terraform sau OpenTofu pentru resurse, Ansible pentru configurație
  • Stare păstrată în depozit comun, cu blocare la scrieri concurente
  • Secrete criptate cu SOPS sau păstrate în HashiCorp Vault

GitOps: Git-ul devine sursa adevărului

Pentru aplicațiile care rulează în Kubernetes mergem un pas mai departe. Starea dorită a fiecărui mediu stă într-un repo, iar Argo CD sau Flux o compară continuu cu ce rulează efectiv și corectează diferențele. Nimeni nu mai aplică manifeste de pe laptop, deci nu mai există versiuni care rulează fără să știe nimeni de unde au venit. Detectarea derivei funcționează în ambele sensuri: afli imediat dacă cineva a schimbat ceva direct în cluster, iar modificarea se anulează sau se ridică la revizuire.

  • Starea dorită descrisă în Git, aplicată automat de Argo CD sau Flux
  • Detectarea derivei, cu corecție sau alertă la modificări manuale
  • Istoric complet: cine a schimbat ce, când și cu ce aprobare

Bune practici pe care le aplicăm în cod și în Git

O bază de cod de infrastructură devine repede la fel de dezordonată ca aplicația pe care o susține, dacă nu are reguli. Cel mai des vedem două probleme: modificări aplicate direct în producție, care fac codul mincinos, și medii care au început identice și au divergat în șase luni. Practicile de mai jos previn exact aceste două derive și se verifică la fiecare intervenție din orele incluse, cu exerciții de recuperare planificate, nu improvizate la incident.

  • Tot codul în Git, cu revizuire obligatorie pe pull request
  • Infrastructură imutabilă: înlocuim mașina, nu o reparăm la nesfârșit
  • Nicio modificare manuală în producție, iar excepțiile se documentează cu termen
  • Exerciții periodice de recuperare, cu reconstruire reală din cod
  • Paritate între medii, verificată automat, și documentație ținută în același repo

Recuperare din dezastru și ore incluse

Cel mai concret beneficiu al infrastructurii ca cod se vede la incident. Dacă un server se pierde, îl reconstruim rulând codul, în minute sau ore, nu în zile de reconstituire din memorie. Pentru rezidenții Moldova IT Park care trebuie să demonstreze continuitatea serviciului în fața clienților europeni, exercițiul de recuperare documentat este un argument comercial, nu doar tehnic. Cererile se deschid din panoul de client, la secțiunea Servicii DevOps; un VPS include între una și opt ore lunar, iar serverele dedicate între cinci și zece ore, în funcție de plan.

Orele de DevOps, CyberSecurity și Programare sunt incluse în abonament, lună de lună: 1 h de la planul cPanel Advanced în sus, 1–8 h pe VPS și 5–10 h pe serverele dedicate, în funcție de plan, și 10 h pe GPU. Le ceri din panoul de client și propui termenul; cota expiră la sfârșitul lunii calendaristice, iar lucrul de peste cotă se acceptă și se facturează separat, în euro, cu TVA 20 % și factură SFS. Cu abonamentele care includ minimum 2 ore lunare îți construim un site de prezentare, iar cu cele care includ minimum 5 ore, un magazin online — din orele deja plătite în abonament.

Cazuri de utilizare

Rezident Moldova IT Park cu medii per client

Fiecare client european primește un mediu identic, creat din același cod cu alte variabile. Un proiect nou se ridică într-o oră, nu într-o săptămână de configurare manuală, iar diferențele între medii nu mai apar accidental.

Agenție web care întreține site-uri .md

Serverele, regulile de firewall și înregistrările DNS ale zecilor de site-uri sunt descrise în cod. O actualizare de securitate se aplică în lot, cu revizuire pe pull request, nu prin conectare la fiecare mașină.

Producător agroalimentar cu cerințe de continuitate

Clienții din Uniunea Europeană cer dovezi că sistemul de trasabilitate se poate reface rapid. Exercițiul documentat de reconstruire din cod, repetat periodic, răspunde direct la această cerință în auditurile de furnizor.

Cum lucrăm

  1. Inventariem ce există acum

    Din panou, la Servicii DevOps, ceri intervenția. Inventariem serverele, serviciile și configurațiile actuale, apoi stabilim ordinea în care le aducem în cod.

  2. Scriem codul și îl validăm

    Descriem resursele în Terraform sau OpenTofu și configurația în Ansible, apoi validăm codul recreând un mediu de test de la zero.

  3. Activăm GitOps și derivarea

    Mutăm starea dorită a aplicațiilor în Git, conectăm Argo CD sau Flux și activăm detectarea derivei, cu alerte pe modificările făcute manual.

  4. Predăm cu exercițiu de recuperare

    Primești repo-ul documentat, procedura de rulare, secretele gestionate corect și raportul unui exercițiu real de reconstruire a unui mediu din cod.

Tehnologii

  • Terraform
  • OpenTofu
  • Ansible
  • Argo CD
  • Flux
  • SOPS
  • HashiCorp Vault
  • GitLab CI

Întrebări frecvente

  • Ce este infrastructura ca cod?

    Este practica de a descrie serverele, rețelele și configurațiile în fișiere versionate, în loc să le creezi manual dintr-un panou. Codul devine sursa adevărului: îl revizuiești ca pe orice modificare de aplicație, îl rulezi de câte ori vrei și obții același rezultat în fiecare mediu.

  • Terraform sau Ansible: care e diferența?

    Terraform creează și șterge resurse: mașini, volume, reguli de firewall, înregistrări DNS. Ansible configurează ce este deja creat: instalează pachete, scrie fișiere, pornește servicii. Nu sunt alternative, sunt etape consecutive. În practică le folosim împreună, cu Terraform înainte și Ansible după.

  • Ce este GitOps și ce face Argo CD?

    GitOps înseamnă că starea dorită a sistemului trăiește în Git, iar un agent din cluster o aplică singur. Argo CD compară continuu ce scrie în repo cu ce rulează efectiv și corectează diferențele. Deploy-ul devine un merge, iar revenirea la o versiune anterioară devine o revenire în istoricul Git.

  • Cum reconstruiesc infrastructura din cod după un dezastru?

    Rulezi codul pe resurse noi, restaurezi datele din backup și repui traficul. Partea care se strică cel mai des este exact cea netestată, de aceea facem exerciții periodice de recuperare, cu reconstruire reală a unui mediu, și îți predăm raportul cu timpii măsurați.

  • OpenTofu în loc de Terraform: merită?

    OpenTofu este o continuare compatibilă a Terraform, cu licență deschisă, și pentru majoritatea configurațiilor migrarea este directă. Contează mai ales dacă vrei să eviți dependența de licența unui singur furnizor. Îți spunem la scoping care variantă se potrivește configurației tale actuale.

  • Cât din automatizare încape în orele incluse?

    Aducerea în cod a unui mediu de dimensiune obișnuită și un prim exercițiu de recuperare intră de regulă în cota lunară a unui server dedicat sau a unui VPS mai mare. Restul se face incremental, în intervenții scurte din lunile următoare, în ordinea de prioritate stabilită cu tine.

Aducem infrastructura ta în cod

Spune-ne câte servere ai și ce s-a configurat manual. Le aducem în Terraform și Ansible, activăm GitOps și îți dovedim recuperarea cu un exercițiu real.