Eu sunt Alex, inginer DevOps cu șase ani de experiență în domeniul IT. Am trecut de la roluri de administrator sysops și manager IT la DevOps, tranziție pe care am făcut-o acum trei ani. De-a lungul timpului, am obținut șase certificări: AWS SysOps Administrator, AWS Architect Associate, AWS Certified DevOps Engineer - Professional, Oracle Certified Foundations Associate, Oracle Cloud Infrastructure Architect Associate și HashiCorp Terraform Associate.
În acest articol, îmi propun să prezint Terraform, de la instalare la folosire eficientă.
Vom acoperi:
- instalarea Terraform și AWS CLI
- configurarea providerului AWS
- crearea și distrugerea unei instanțe EC2 utilizând Terraform
CE ESTE TERRAFORM
La începutul carierei mele în DevOps, am fost introdus în conceptul de Infrastructure as Code (IaC), care m-a captivat complet. Terraform a devenit un instrument neprețuit în arsenalul meu, permițându-mi să automatizez eficient provizionarea resurselor cloud.
Pentru începători, configurarea inițială Terraform poate părea descurajantă. Nu trebuie să vă temeți; procesul este mai simplu decât pare.
Instrumentele Terraform sunt în general împărțite în două categorii majore:
1. Orchestrarea infrastructurii
Ce face: configurează și conectează automat diferitele părți ale unui sistem informatic. Este ca și cum ai pune împreună piesele unui puzzle.
De ce este important: astfel te asiguri că toate piesele funcționează împreună fără probleme și eficient, fără a fi nevoie de intervenție manuală.
2. Gestionarea configurației
Ce face: menține consecvența și corectitudinea setărilor și configurațiilor sistemelor informatice.
De ce este important: te asiguri că totul rămâne în configurația corectă, făcând sistemele fiabile și mai ușor de gestionat.
Terraform este unul dintre cele mai populare instrumente Infrastructure-as-code (IaC), utilizat de echipele DevOps pentru a automatiza sarcinile de infrastructură. Acesta este folosit pentru a automatiza aprovizionarea cu resurse cloud.
INSTALAREA TERRAFORM
Să începem cu cerințele esențiale:
- răbdare și entuziasm
- înțelegere de bază a AWS*
- cont AWS*
*Poți utiliza diverși provideri precum Azure, Google Cloud, Alibaba și alții, AWS este preferința mea.
Instalarea Terraform este foarte simplă. Descarcă-l, instalează-l și utilizează-l: https://developer.hashicorp.com/terraform/install
INSTALAREA AWS CLI
Deoarece am ales să lucrăm cu AWS pentru a proviziona infrastructura utilizând Terraform, trebuie să instalăm și AWS CLI. Urmează pașii listați pentru a instala cea mai recentă versiune a AWS CLI pentru sistemul tău de operare: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Terraform utilizează AWS CLI și efectuează apeluri API pentru a executa orice sarcină de provizionare. Conectează-te la AWS Console și creează un utilizator Terraform. Utilizatorul are nevoie de acces programatic la AWS, așadar bifează doar căsuța corespunzătoare.
Pentru moment, atribuie rolul de administrator acestui utilizator. Cu toate acestea, se recomandă să se respecte principiul celui mai mic privilegiu atunci când lucrezi la proiecte.
Odată ce utilizatorul este creat cu succes, salvează Access Key ID și Secret Access Key.
Trebuie să configurăm aceste credențiale în AWS CLI pe care tocmai l-am instalat. Deschide terminalul și execută comanda "aws configure" pentru a configura credențialele default. Selectează regiunea dorită, dacă este necesar.
Cu aceasta, am configurat cu succes mediul nostru pentru a începe să lucrăm cu Terraform și AWS.
Notă: Terraform poate efectua apeluri API fără AWC CLI dacă introduci credențialele direct în cod (hardcode) sau utilizezi o altă metodă pentru a accesa AWS.
PROVIDERI TERRAFORM
Pentru a lucra cu un provider de cloud precum AWS utilizând Terraform, trebuie să configurezi un modul pentru acesta. Acest lucru implică descărcarea fișierelor necesare și specificarea versiunii providerului AWS pe care dorești să o folosești.
Pentru a începe proiectul Terraform, creează un nou director pe computerul tău și deschide-l în editorul tău de cod. Tot codul Terraform va fi introdus în fișiere cu extensia ".tf" în acest director. Începem prin a crea un fișier numit "providers.tf" și adăugăm configurația providerului, astfel:
După cum am menționat anterior, Terraform utilizează sintaxa HCL, un limbaj declarativ de configurare care ne permite să specificăm resursele cloud pe care dorim să le furnizăm. În fișierul "providers.tf", definim un bloc Terraform care conține un alt bloc pentru specificarea providerilor necesari.
Code snippet-ul de mai sus direcționează Terraform să configureze providerul AWS cu versiunea 5.3.0. Salvează fișierul "providers.tf". Pentru a inițializa proiectul Terraform, execută comanda "terraform init" în directorul principal.
RESURSE
Crează un alt fișier numit "main.tf" în același director. Scopul creării acestui fișier este de a declara resursele pe care dorim să le creăm în AWS. Este complet în regulă să omitem crearea acestui fișier și să adăugăm doar fișierul "providers.tf" cu codul de mai jos. Cu toate acestea, prin crearea unor fișiere separate putem gestiona codul Terraform într-un mod mai eficient. Adaugă codul de mai jos la fișierul "main.tf".
Aici am definit un bloc de resurse de tip "aws_instance". Acesta instruiește Terraform că dorim să creăm o resursă instanță EC2 în AWS cu atributele date.
Notă: pentru a identifica tipul corect de resursă și atributele asociate, consultă Registrul Terraform.
Al doilea parametru este "ec2", care este un identificator intern. Scopul său este de a face referire la această instanță EC2 particulară în altă parte în cod. Putem atribui orice nume acestui identificator.
Printre atributele resurselor, am declarat AMI, care definește imaginea pe care dorim să o folosim pentru a crea această instanță EC2. De asemenea, am specificat "instance_type" pentru a defini dimensiunea instanței EC2 care urmează să fie creată.
În plus, am atribuit un tag "Name" cu valoarea "MyFirstEC2UsingTerraform".
Astfel, am creat cu succes codul pentru a crea o instanță EC2 în AWS utilizând Terraform.
TERRAFORM PLAN
Comanda "plan" servește la validarea declarațiilor de resurse făcute cu Terraform. Aceasta analizează toate fișierele de configurare Terraform, detectând orice erori de sintaxă, neconcordanțe de versiune și alte probleme.
În plus, aceasta face referințe încrucișate între cod și state file pentru a determina și a prezenta un rezumat al resurselor care vor fi create, actualizate sau șterse, dacă decidem să executăm versiunea curentă a codului. Această caracteristică oferă o imagine de ansamblu utilă a modificărilor înainte de a le aplica infrastructurii vizate.
Pentru a utiliza această caracteristică, accesează fișierul codului tău și execută comanda "terraform plan", apoi observă rezultatul.
TERRAFORM BACKEND
Backend-urile determină în primul rând locul în care Terraform își stochează starea. Terraform utilizează implicit un backend numit local, pentru a stoca starea ca un fișier local pe disc. Terraform acceptă mai multe backend-uri care permit operațiuni remote legate de servicii. Unele dintre backend-urile populare includ:
- S3
- Consul
- Terraform Cloud
POTENȚIALE PROVOCĂRI CU BACKEND LOCAL
În prezent, o întreagă echipă gestionează și colaborează la un proiect Terraform. Stocarea state file local pe laptop nu va permite colaborarea. Eu personal prefer Terraform Cloud.
DECLARAREA VALORILOR VARIABILELOR ÎN TERRAFORM
Atunci când variabilele sunt declarate în configurația ta, acestea pot fi setate în mai multe moduri:
- Valori implicite ale variabilelor
- Fișier de definire a variabilelor (*.tfvars)
- Variabile de mediu
- Setarea variabilelor în linia de comandă
OUTPUTS.TF
Valorile de output fac ca informațiile despre infrastructura ta să fie disponibile pe linia de comandă și pot expune informații care pot fi utilizate de alte configurații Terraform.
Structura în Terraform arată astfel:
Acum trebuie doar să introduci "terraform apply", să observi rezultatul și apoi să introduci "yes" pe prompt.
Acum ai EC2 creat utilizând Terraform.
Felicitări!
Pentru a șterge resursa, introducem "terraform destroy".
CODUL TERRAFORM ÎN NOTEPAD
Poți scrie codul Terraform în Notepad și nu va avea niciun impact.
Dar, desigur, este nevoie de o aplicație mai bună, care să ne permită să dezvoltăm codul mai rapid.
TERRAFORM CHEAT SHEET
Comenzi CLI:
- Inițializarea Terraform: terraform init
- Crearea unui plan: terraform plan
- Aplicarea planului: terraform apply
- Distrugerea infrastructurii: terraform destroy
- Pentru a importa o infrastructură existentă: terraform import [resource_name] [resource_id]
- Pentru a vedea starea infrastructurii: terraform show
- Pentru a lista toate resursele pe care Terraform le gestionează: terraform state list
- Pentru a obține informații detaliate despre o anumită resursă: terraform state show [resource_name]
- Pentru a valida sintaxa fișierelor Terraform: terraform validate
- Pentru a vedea o listă a tuturor providerilor Terraform disponibili: terraform providers
- Pentru a vedea versiunea de Terraform instalată în prezent: terraform version
- Pentru a înlocui valoarea unei variabile din linia de comandă: terraform apply -var '[variable_name]=[value]
Unul dintre cele mai bune aspecte ale Terraform este versatilitatea sa. Odată ce stăpânești elementele de bază, poți lucra cu ușurință cu toți providerii.
Sper că acest ghid ți s-a părut util.
*AUTOR: ALEXANDRU DUMITRIU | SOFTSERVE SENIOR AWS DEVOPS ENGINEER