Înțelegerea instrumentelor IaC: Cloudformation vs Terraform

AWS CloudFormation și Terraform – nu sunteți sigur pe care să alegeți? Acest articol vă va ajuta să luați o decizie inteligentă.

Cloud Computing a revoluționat lumea DevOps. Nu mai este doar un cuvânt la modă; este aici și este aici pentru a schimba modul în care dezvoltăm și menținem aplicațiile noastre. Deși există nenumărate motive pentru care ar trebui să utilizați cloud computing pentru toate nivelurile de afaceri, există o ușoară limitare, trebuie să vă furnizați infrastructura manual.

Trebuie să mergi la consolele furnizorilor tăi de cloud și să le spui exact ce vrei. Acest lucru funcționează bine pentru cazurile de utilizare mici, dar ce se întâmplă dacă aveți diferiți oameni care fac modificări de configurare în consolă. Ai putea ajunge cu o infrastructură super complicată care va deveni din ce în ce mai greu de întreținut. Nu există o modalitate eficientă de a colabora sau de a urmări modificările aduse Infrastructurii în Cloud. Ei bine, de fapt există. Infrastructura ca cod.

Infrastructura ca cod este un termen foarte popular în cloud computing. Este procesul de gestionare a infrastructurii tale IT folosind cod. Da, este corect. În loc să mergi la consolă și să faci totul manual; Infrastructura ca cod, aka IAAC sau IAC, vă permite să scrieți fișiere de configurare, care apoi să vă furnizați infrastructura cloud. IAC ne oferă beneficii precum consistența, întreținerea ușoară și rapidă și fără loc pentru erori umane.

Utilizarea IAC cu Amazon Web Services

AWS este cel mai important serviciu de cloud computing din lume, având o cotă de piață dublă decât următorul furnizor de cloud după acesta. Există peste 200 de servicii pe AWS care pot satisface sute și mii de cazuri de utilizare.

Când începeți să utilizați IAC cu AWS, adesea vă veți restrânge opțiunile la AWS CloudFormation și instrumentul open-source, Terraform. Când încercați să faceți o alegere între cele două, înțelegerea multitudinii de caracteristici pe care le oferă ambele instrumente poate fi destul de copleșitoare. În acest articol, vom arunca o privire asupra diferențelor dintre AWS CloudFormation și Terraform pentru a vă ajuta să decideți care instrument este mai potrivit nevoilor dumneavoastră.

Terraform vs. AWS CloudFormation: diferențe

Modularitate

Atunci când utilizați IAC în organizații mari, modularitatea poate fi un factor important pentru alegerea instrumentului potrivit.

  Ce sunt aplicațiile „Freemium” și cum funcționează?

CloudFormation

CloudFormation nu are suport nativ pentru module. Vă permite să utilizați ceva numit stive imbricate ca module.

De exemplu, puteți avea o configurație standard a modului în care doriți să furnizați un compartiment S3 în organizația dvs. Deci, creați un șablon standard CloudFormation care creează compartimente S3. Acum, când un utilizator final dorește să creeze compartimentul S3, poate folosi acest șablon CloudFormation ca stivă imbricată și poate crea un compartiment S3 standard.

Există, de asemenea, un serviciu mai puțin cunoscut al AWS, the Catalogul de servicii AWS care vă poate ajuta cu modularitatea AWS CloudFormation. Catalogul de servicii este un serviciu AWS care este conceput special pentru organizațiile care doresc să limiteze domeniul de aplicare al Serviciilor AWS pentru a îndeplini cerințele de conformitate, securitate, cost sau performanță. Si ghici ce? AWS Service Catalog folosește șabloane CloudFormation în backend.

Să înțelegem rapid acest lucru cu un exemplu. Gălețile S3, dacă nu sunt utilizate corespunzător, pot fi în curând catastrofale pentru datele dumneavoastră confidențiale. Să luăm același exemplu, doriți să aveți un mod standard de modul în care doriți să utilizați S3 în organizația dvs. Prima opțiune este să creați șablonul de stivă imbricată, care poate fi folosit în alte stive CloudFormation și este la fel de bun.

Dacă nu doriți ca utilizatorii să folosească acest șablon standard ca stivă imbricată, puteți utiliza Catalogul de servicii AWS. Service Catalog va permite utilizatorilor să utilizeze acest șablon standard din interfața de utilizare a consolei și să specifice unii parametri, pentru ușoare personalizări. Acest lucru vă va permite să controlați modul în care infrastructura este furnizată în conturile dvs. AWS și să preveniți orice scenarii nedorite.

Terraform

Terraform are suport nativ pentru module. Vă permite să creați configurații standard la fel ca AWS CloudFormation și să le utilizați în alte configurații terraform.

Deoarece Terraform este un instrument open-source, puteți găsi și utiliza, de asemenea, câteva module open-source prefabricate în Registrul Terraform. De asemenea, vă puteți crea propriile module cu propriile configurații și le puteți găzdui într-un registru de module privat.

Personal, aș prefera să folosesc Terraform peste CloudFormation dacă modularitatea era o cerință mare.

Utilizarea unei stive imbricate în CloudFormation nu este la fel de ușoară ca utilizarea modulelor în Terraform. Factorul major este că trecerea datelor de la un șablon CFN la stiva imbricată poate fi destul de complicată.

  Setați-vă propria tastă de comandă rapidă pentru a vă deplasa între file în Firefox

Nu există un loc standard în care să poată fi partajate șabloanele CloudFormation. Aveți catalogul de servicii AWS, dar acesta este doar o modalitate de a aplica unele reguli pentru crearea infrastructurii prin Console. Suntem cu toții despre cod. Când utilizați Service Catalog, deși unele sarcini complicate sunt încapsulate de fișierele CloudFormation, trebuie totuși să parcurgeți sarcina manuală de a merge la consolă și de a specifica parametrii pentru a vă crea Infrastructura.

Terraform, pe de altă parte, are o metodă stabilită de creare, întreținere și partajare a modulelor. Puteți vedea cerințele exacte ale modulelor în Registrul de module Terraform și le puteți utiliza în fișierele terraform foarte ușor.

Control și guvernare asupra infrastructurii

Dacă doriți să limitați resursele pe care oamenii dvs. le pot crea în conturile dvs. AWS: atât AWS CloudFormation, cât și Terraform vă oferă mijloacele pentru a face acest lucru.

Să vorbim mai întâi despre CloudFormation. CloudFormation în sine nu oferă niciun control asupra modului în care sunt utilizate șabloanele, dar puteți utiliza politicile AWS IAM pentru a permite numai utilizatorilor din contul dvs. AWS să utilizeze numai șabloanele standard CloudFormation pentru crearea resurselor. În exemplul nostru de compartiment S3, este posibil să doriți să limitați toate permisiunile „S3 Create” pentru utilizatori și să le permiteți să creeze compartimente S3 numai din AWS Service Catalog sau nested Stacks.

Terraform vă permite să controlați ce resurse pot crea utilizatorii dvs. folosind o politică ca instrument de cod Santinelă. Sentinel vă permite să aplicați politici detaliate, bazate pe logică, pentru a permite sau a refuza acțiunile utilizatorului prin Terraform. De exemplu, puteți refuza toate resursele care creează compartimente S3 și permiteți utilizatorilor să creeze compartimente S3 numai dintr-un modul standard.

Managementul Statului

Atât AWS CloudFormation, cât și Terraform trebuie să țină evidența resurselor pe care le întrețin.

Terraform stochează starea infrastructurii dvs. într-un fișier de stare. Acest fișier este stocat local în mod implicit, totuși îl puteți stoca pe backend-uri la distanță, cum ar fi S3, și puteți avea mai mulți utilizatori să facă modificări la același set de infrastructură.

CloudFormation nu menține un fișier de stare, cel puțin nu unul pe care îl putem vedea. CloudFormation este un serviciu gestionat, așa că face toată întreținerea și verificările de stat în fundal.

Atât AWS CloudFormation, cât și Terraform au un mijloc de a verifica ce modificări vor fi aduse infrastructurii dvs. În Terraform, puteți rula o comandă – „planul terraform” și modul în care Terraform plănuiește să aplice modificările de configurare. În CloudFormation, utilizatorii pot vedea aceste informații prin seturi de modificări.

  Top 8 DNS/Filtrare de conținut pentru casă pentru a proteja familia și copiii de amenințările cibernetice

Limba

Terraform folosește limbajul de configurare HashiCorp, HCL, un limbaj creat de HashiCorp. Este foarte asemănător cu JSON, cu funcții și capabilități suplimentare încorporate.

Șabloanele CloudFormation sunt scrise în formate YAML sau JSON

Înregistrare și rollback

Atât AWS CloudFormation, cât și Terraform au capacități bune de înregistrare. Din experiența mea, erorile și problemele au fost simple (în cea mai mare parte).

CloudFormation: În mod implicit, CloudFormation derulează înapoi toate modificările în cazul unei modificări eșuate a stivei. Aceasta este o caracteristică bună și poate fi dezactivată pentru orice scop de depanare.

Terraform: Terraform nu va anula automat modificările în cazul în care nu reușește. Aceasta nu este o problemă, deoarece puteți rula întotdeauna comanda terraform destroy pentru a șterge configurația pe jumătate furnizată și a reporni o rulare Terraform din nou.

Domeniul de aplicare

Terraform nu se limitează la AWS Cloud. Cel mai important factor atunci când alegeți între Terraform și CloudFormation este că Terraform acceptă alți furnizori și servicii de cloud.

Deci, dacă intenționați să utilizați IAC pentru mai multe platforme cloud, Terraform este cea mai bună alegere. CloudFormation, deși un instrument puternic, este limitat doar la AWS. Folosind Terraform, puteți configura infrastructura și vă puteți implementa aplicația în mai multe platforme cloud, făcând astfel aplicația dvs. mai disponibilă și mai robustă.

Suport pentru funcții

De obicei, pe măsură ce AWS lansează noi servicii și caracteristici, CloudFormation va fi actualizat înainte de Terraform, deoarece este un serviciu AWS. În prezent, ambele instrumente acoperă majoritatea serviciilor și caracteristicilor acestor servicii. Acesta poate fi un mic dezavantaj al folosirii Terraform, cu toate acestea, avem o soluție.

Există, de asemenea, posibilitatea de a crea o stivă CloudFormation în codul Terraform. Deci, dacă utilizați Terraform și nu are o funcție, puteți configura temporar o stivă CloudFormation în codul dvs. Terraform.

Suport tehnic

Planul plătit de asistență tehnică AWS acoperă și suportul CloudFormation.

HashiCorp are planuri plătite pentru suport tehnic și pe Terraform.

Concluzie

Atât AWS CloudFormation, cât și Terraform sunt instrumente puternice și complet dezvoltate. Diferențele de mai sus vă vor ajuta să luați o decizie informată de a alege instrumentul în funcție de cerințele dumneavoastră. Ca sugestie personală, dacă intenționați să utilizați mai multe platforme cloud în viitor sau utilizați în prezent mai multe nori, ar trebui să utilizați Terraform ca ghișeu unic pentru toate nevoile dvs. Dacă sunteți în căutarea unui instrument IAC numai pentru AWS, atât AWS CloudFormation, cât și Terraform sunt un joc corect.

Dacă sunteți interesat să învățați Terraform, consultați aceste cursuri online.