Introducere

Finalizat

Infrastructura ca Cod (IaC) este practica de a defini și gestiona resursele cloud prin fișiere de configurare lizibile de mașină, mai degrabă decât prin selecția manuală a portalului sau scripturi neplanificate. În loc să te conectezi la portalul Azure pentru a crea o rețea virtuală, scrii un fișier care descrie rețeaua. Un instrument citește apoi acel fișier și creează resursa pentru tine.

Această abordare aduce o schimbare fundamentală în modul în care este gestionată infrastructura. Modificările sunt urmărite în controlul versiunilor, implementările sunt repetabile, iar mediile pot fi recreate de la zero oricând. Dacă ceva se strică, poți reveni la o stare anterioară. Dacă ai nevoie de un mediu de staging care să reflecte producția, aplici aceleași fișiere cu parametri diferiți.

IaC aduce, de asemenea, infrastructura în aceeași disciplină inginerească ca și codul aplicației. Aceleași fluxuri de lucru pull request, revizuiri de cod și practici automate de testare care se aplică aplicației tale pot fi acum aplicate sistemelor pe care rulează aplicația ta.

Fără asistență AI, ciclul de autorare Infrastructure as Code (IaC) arată astfel:

  1. Șablon de scriere
  2. Caută documentația
  3. Sintaxa fixă
  4. Validează local
  5. Fugi ce-ar fi fost dacă
  6. Desfășurare către staging
  7. Revizuirea modificărilor
  8. Implementare în producție

Și repetă același lucru pentru fiecare implementare, fie nouă sau actualizată.

Obiective de învățare

Până la sfârșitul acestui modul, puteți să:

  • Explică ce este Infrastructure as Code și de ce contează în operațiunile moderne de cloud
  • Descrie diferența dintre abordările declarative și imperative pentru IaC
  • Identificați fluxul de lucru tradițional de creare IaC și punctele sale de fricțiune
  • Explică cum GitHub Copilot schimbă bucla internă IaC
  • Descrie capabilitățile GitHub Copilot cele mai relevante pentru munca în infrastructură

Provocările infrastructurii ca cod

Fiecare pas are fricțiune. Scrierea unui șablon Bicep de la zero necesită cunoștințe despre tipurile de resurse, versiunile API-urilor, proprietățile necesare și convențiile de denumire specifice Azure. Căutarea versiunii corecte de API pentru Microsoft.Network/virtualNetworks înseamnă să navighezi prin documentație sau să copiezi din proiecte anterioare. Erorile de sintaxă se detectează după ce rulează o comandă de compilare. Iar menținerea șabloanelor actualizate pe măsură ce API-urile Azure evoluează reprezintă o povară continuă de întreținere.

Rezultatul este că IaC este adesea tratată ca o abilitate specializată. Inginerii care nu scriu șabloane în mod regulat apelează la selecția portalului, încălcând consistența pe care IaC ar trebui să o oferă.

Abordarea declarativă vs. imperativă

Există două stiluri fundamentale de IaC. Înțelegerea diferenței te ajută să alegi unealta potrivită și să creezi prompturi mai bune pentru GitHub Copilot.

IaC declarativ

Într-o abordare declarativă, descrii starea finală dorită a infrastructurii tale. Instrumentul găsește cum să ajungă acolo.

"Vreau un VNet cu spațiu de adrese 10.0.0.0/16 și două subrețele."

Azure Bicep și șabloanele ARM sunt declarative. Tu definești ce resurse ar trebui să existe, iar Azure Resource Manager se ocupă de secvențiere și creare. Dacă resursa există deja în starea corectă, nu se aplică nicio modificare. Dacă nu există, se creează. Dacă e diferit, se actualizează.

IaC obligatoriu

Într-o abordare imperativă, descrii pașii necesari pentru a ajunge la starea dorită. Scrii o procedură, nu o declarație.

"Verifică dacă VNet-ul există. Dacă nu, fugi az network vnet create...."

Scripturile Azure CLI și Azure PowerShell sunt, de obicei, imperative. Tu controlezi fluxul, gestionezi erorile și gestionezi tu însuți ordinele. Îți oferă mai mult control, dar și mai multă responsabilitate. Asta include gestionarea idempotenței, ceea ce înseamnă că scriptul trebuie să fie sigur pentru a fi rulat de mai multe ori.

Pe care ar trebui să o folosești?

Alegerea corectă depinde de scenariu. Instrumentele declarative precum Bicep sunt mai bune pentru gestionarea resurselor infrastructurale de lungă durată deoarece gestionează starea și drift-ul automat. Uneltele imperative precum scripturile CLI sunt mai bune pentru sarcini operaționale, pași de configurare unică sau automatizări care implică logică, condiții și bucle.

În practică, majoritatea inginerilor cloud folosesc ambele. Și GitHub Copilot ajută și la ambele.

Cum schimbă GitHub Copilot procesul de creare a șabloanelor

GitHub Copilot scurtează și simplifică fiecare pas al ciclului de authoring IaC.

În etapa de scriere, Copilot generează definiții complete ale resurselor din descrieri în limbaj natural. În loc să cauți sintaxa Bicep pentru o resursă Azure, descrii ce ai nevoie și Copilot produce un punct de pornire în câteva secunde.

În etapa de revizuire, Copilot poate analiza un șablon existent și identifica lacune de securitate, proprietăți lipsă sau tipare învechite. Acționează ca o a doua pereche de ochi înainte ca șablonul să fie implementat.

În etapa de transformare, Copilot poate converti între Azure CLI și PowerShell, între Azure Resource Manager JSON și Bicep, sau între Azure Pipelines și GitHub Actions. Reducerea costului de schimbare a uneltelor sau adaptarea exemplelor din documentație.

În etapa de documentare, Copilot poate citi un șablon complet și poate genera explicații lizibile de către oameni, referințe de parametri și descrieri de arhitectură. Muncă care este adesea sărită complet pentru că este plictisitoare de făcut manual.

Schimbarea nu ține doar de viteză. Este vorba despre coborârea barierei de intrare. Inginerii care nu sunt specialiști în Bicep pot acum să creeze șabloane corecte și bine structurate, descriindu-și intenția în limbaj simplu.

Capabilități GitHub Copilot pentru lucrări de infrastructură

GitHub Copilot apare în mai multe moduri în VS Code, fiecare potrivit pentru diferite părți ale fluxului de lucru IaC.

Sugestii inline

Pe măsură ce tastezi un fișier .bicep, .yaml, .ps1 sau .sh, Copilot oferă finalizări în timp real. Dacă tastezi începutul definiției unei resurse, Copilot prezice restul. Inclusiv proprietățile necesare, valorile implicite și modelele comune. Accepți cu Tab sau respingi cu Escape.

Sugestiile în linie funcționează cel mai bine pentru a continua tiparele deja stabilite în fișier. Dacă definești corect o resursă, Copilot preia structura și sugerează resurse similare în același stil.

Chat copilot

Copilot chat (Ctrl+Alt+I) este o interfață de conversație unde poți pune întrebări, descrie ce vrei să construiești, să lipești codul existent pentru revizuire sau să ceri explicații.

Chat-ul este mai bun decât sugestiile inline pentru sarcini care necesită mai mult context. Exemple precum generarea unui șablon complet de la zero, refactorizarea unui fișier complex sau cererea unei explicații despre cum funcționează o resursă.

Copilot cu MCP (Model Context Protocol)

MCP permite Copilot să se conecteze la instrumente și surse de date externe. Serverul MCP Bicep oferă Copilot acces la definițiile tipurilor de Bicep live, versiunile actuale ale API-ului și regulile de validare. Făcând rezultatul Bicep mai precis decât ceea ce poate produce doar din datele de antrenament.

De ce IaC este bine adaptat pentru asistență AI

Definițiile infrastructurii au calități care le fac candidați buni pentru generarea asistată de AI:

  • Acestea sunt foarte structurate: definițiile resurselor urmează scheme. Proprietățile se bazează pe tipuri cunoscute, valori valabile și denumiri obligatorii/opționale. Această natură structurată face mai ușor pentru un model să producă rezultate sintactic corecte.
  • Sunt bogate în tipare: Majoritatea implementărilor Azure folosesc un set relativ mic de tipuri comune de resurse: rețele virtuale, conturi de stocare, resurse de calcul și identitate. Aceste tipare apar frecvent în datele de antrenament, ceea ce înseamnă că Copilot se bazează pe multe exemple.
  • Sunt costisitoare de cercetat manual: găsirea combinației corecte între versiunea API-ului, proprietățile necesare și SKU-urile valide pentru un tip de resursă necunoscut poate dura mult timp. Copilot comprimă acea cercetare într-un prompt.
  • Sunt sigure de iterat: Validezi înainte de implementare. O sugestie greșită din partea Copilot este prinsă la az bicep build sau what-if înainte să atingă resurse reale. Această plasă de siguranță încurajează experimentarea.

Takeaways cheie

  • IaC tratează infrastructura ca pe cod: controlată de versiuni, repetabilă și revizuită.
  • Instrumente declarative precum Bicep descriu starea finală dorită; instrumentele imperative precum CLI descriu pașii pentru a ajunge acolo.
  • Fluxul de lucru tradițional IaC are fricțiuni semnificative la fiecare etapă. Copilot reduce această frecare.
  • GitHub Copilot ajută prin sugestii inline, Copilot Chat și context îmbunătățit de MCP.
  • IaC este bine adaptat pentru asistență AI deoarece este structurat, bogat în pattern-uri și sigur pentru iterare.

Notă

Recunoaștem că oamenilor le place să învețe în moduri diferite. Puteți alege să finalizați acest modul în format video sau puteți citi conținutul ca text și imagini. Textul conține mai multe detalii decât videoclipurile, așa că, în unele cazuri, poate doriți să vă referiți la el ca material suplimentar la prezentarea video.