SoftServe SoftServe
SoftServe

SoftServe

3.93

15 evaluări

Adaugă evaluare

CE ESTE TERRAFORM: CUM SĂ ÎL INSTALEZI ȘI SĂ ÎL FOLOSEȘTI

25.07.2024

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:

infrastructure as a code tools examples

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

installation of aws cli

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.

create a terraform user

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.

providing role to terraform user

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.

configure credentials in terraform

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:

configuration for provider.tf file

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".

adding code to 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:

  1. Valori implicite ale variabilelor
  2. Fișier de definire a variabilelor (*.tfvars)
  3. Variabile de mediu
  4. 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.

outputs.tf code

Structura în Terraform arată astfel:

tree structure in Terraform

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.

terraform in notepad

Dar, desigur, este nevoie de o aplicație mai bună, care să ne permită să dezvoltăm codul mai rapid.

terraform vs visual studio code meme

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]

terraform memes

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