Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

NĂ« numrin e ardhshĂ«m tĂ« Red Hat Ansible Engine 2.9 ju pret pĂ«rmirĂ«sime mbresĂ«lĂ«nse, disa prej tĂ« cilave pĂ«rshkruhen nĂ« kĂ«tĂ« artikull. Si zakonisht, ne kemi zhvilluar pĂ«rmirĂ«simet e Ansible Network nĂ« mĂ«nyrĂ« tĂ« hapur, me mbĂ«shtetje nga komuniteti. Bashkohuni — hidhni njĂ« vĂ«shtrim nĂ« bordit tĂ« detyrave nĂ« GitHub dhe shqyrtoni planin e zhvillimit pĂ«r lĂ«shimin e Red Hat Ansible Engine 2.9 nĂ« faqen wiki pĂ«r Ansible Network.

Siç shpallëm kohët e fundit, Red Hat Ansible Automation Platform tani përfshin Ansible Tower, Ansible Engine dhe të gjithë përmbajtjen e Ansible Network. Tani, shumica e platformave të njohura rrjetore realizohen përmes modulave Ansible. Për shembull:

  • Arista EOS
  • Cisco IOS
  • Cisco IOS XR
  • Cisco NX-OS
  • Juniper Junos
  • VyOS

Lista e plotë e platformave që mbështeten plotësisht nga Red Hat përmes abonimit Ansible Automation, është publikuar këtu.

ÇfarĂ« kemi mĂ«suar

Në katër vitet e fundit kemi mësuar shumë rreth zhvillimit të një platforme për automatizimin e rrjetit. Po ashtu, kemi mësuar se si artefaktet e platformës aplikohen në playbooks dhe role Ansible nga ana e përdoruesve të fundit. Dhe ja çfarë kemi zbuluar:

  • Organizatat automatizojnĂ« pajisje nga njĂ« ose mĂ« shumĂ« ofrues tĂ« ndryshĂ«m.
  • Automatizimi Ă«shtĂ« njĂ« fenomen jo vetĂ«m teknik, por edhe kulturor.
  • Automatizimi masiv i rrjeteve Ă«shtĂ« mĂ« i komplikuar se sa duket, pĂ«r shkak tĂ« parimeve themelore arkitektonike tĂ« dizajnimit tĂ« automatizimit.

Kur diskutuam planet tona afatgjata për zhvillim më shumë se një vit më parë, klientët tanë korporatë kërkuan të ardhmen:

  • Grumbullimi i fakteve duhet tĂ« standardizohet mĂ« mirĂ« dhe tĂ« pajtohet me procesin e automatizimit pĂ«r çdo pajisje.
  • PĂ«rditĂ«simi i konfigurimeve nĂ« pajisje gjithashtu duhet tĂ« standardizohet dhe tĂ« pajtohet, qĂ« modulet Ansible tĂ« trajtojnĂ« pjesĂ«n e dytĂ« tĂ« ciklit pas grumbullimit tĂ« fakteve.
  • KĂ«rkohen metoda tĂ« rrepta dhe tĂ« mbĂ«shtetura pĂ«r tĂ« shndĂ«rruar konfigurimin e pajisjes nĂ« tĂ« dhĂ«na tĂ« strukturuara. Bazuar nĂ« kĂ«tĂ«, burimi i sĂ« vĂ«rtetĂ«s mund tĂ« transferohet nga pajisja rrjetore.

Përmirësimet e fakteve

Grumbullimi i fakteve nga pajisjet rrjetore me Ansible shpesh ndodh nĂ« mĂ«nyrĂ« tĂ« rastĂ«sishme. Platformave rrjetore u mungojnĂ« mundĂ«si tĂ« ndryshme pĂ«r grumbullimin e fakteve, por ato kanĂ« pothuajse asnjĂ« — ose madje asnjĂ« — funksionalitet pĂ«r analizimin dhe standardizimin e prezantimit tĂ« tĂ« dhĂ«nave nĂ« çifte çelĂ«s-vlerĂ«. Lexoni njĂ« postim Ken Celenza rreth vĂ«shtirĂ«sive dhe mundimeve qĂ« lidhen me analizimin dhe standardizimin e tĂ« dhĂ«nave tĂ« fakteve.

Ndoshta keni vënë re se si kemi punuar mbi rolin Ansible Network Engine. Natyrisht, pas 24 mijë shkarkimeve, roli Network Engine u bë shpejt një nga rolet më të njohura të Ansible në Ansible Galaxy për skenarët e automatizimit të rrjetit. Para se të transferonim shumë prej këtij përmbajtjeje në Ansible 2.8, për t'u përgatitur për nevojat në Ansible 2.9, ky rol Ansible ofroi grupin e parë të mjeteve për ndihmë në analizimin e komandave, menaxhimin e ekipeve dhe mbledhjen e të dhënave për pajisjet rrjetore.

Nëse jeni të njohur me përdorimin e Network Engine, ky është një mënyrë shumë efikase për mbledhjen, analizimin dhe standardizimin e të dhënave të fakteve për përdorim në Ansible. Disavantazhi i këtij roli është se duhet të krijoni një sërë parserash për çdo platformë dhe për të gjithë aktivitetin rrjetor. Për të kuptuar sa e komplikuar është të krijosh, shpërndash dhe mbash parsera, shikoni më shumë se 1200 parsera nga djemtë e Cisco.

Me fjalë të thjeshta, për automatizimin në shkallë të gjerë është shumë e rëndësishme të përfitoni fakte nga pajisjet dhe t'i normalizoni ato në çifte çelës-vlerë, por është e vështirë të arrini këtë kur keni shumë furnizues dhe platforma rrjetesh.

Çdo moduli i fakteve tĂ« rrjetit nĂ« Ansible 2.9 tani mund tĂ« analizojĂ« konfigurimin e pajisjes rrjetore dhe tĂ« kthejĂ« tĂ« dhĂ«na tĂ« strukturuara — pa biblioteka shtesĂ«, role Ansible ose parsera tĂ« personalizuar.

Duke filluar nga Ansible 2.9 me çdo publikim të një moduli të ri rrjeti, moduli i fakteve përmirësohet për të ofruar të dhëna mbi këtë seksion të konfigurimit. Pra, zhvillimi i fakteve dhe moduleve tani ndodh në një ritëm të përbashkët dhe gjithmonë do të kenë një strukturë të përbashkët të të dhënave.

Konfigurimi i burimeve në pajisjen rrjetore mund të nxirret dhe të transformohet në të dhëna të strukturuara në dy mënyra. Të dyja mënyrat mund të mbledhin dhe transformojnë një listë të caktuar burimesh duke përdorur fjalinë e re gather_network_resources. Emrat e burimeve përputhen me emrat e moduleve, dhe kjo është shumë e përshtatshme.

Gjatë mbledhjes së fakteve:

Me anë të fjalës kyç gather_facts mund të nxirret konfigurimi aktual i pajisjes në fillim të playbook-ut dhe pastaj ta përdorni atë gjatë tërë playbook-ut. Specifikoni burimet e veçanta që dëshironi të nxirrni nga pajisja.

- hosts: arista
  module_defaults:
    eos_facts:
      gather_subset: min
      gather_network_resources:
      - interfaces
  gather_facts: True

Mund tĂ« keni vĂ«nĂ« re diçka tĂ« re nĂ« kĂ«to shembuj, dmth — gather_facts: true tani tani Ă«shtĂ« e disponueshme pĂ«r mbledhjen native tĂ« tĂ« dhĂ«nave pĂ«r pajisje rrjetĂ«sh.

Përdorimi i modulit të të dhënave rrjetore direkt:

- emri: mbledh të dhënat për konfigurimin e interfaces
  eos_facts:
    gather_subset: min
    gather_network_resources:
    - interfaces

Playbook-u kthen të dhënat e mëposhtme në lidhje me interface-in:

ansible_facts:
   ansible_network_resources:
      interfaces:
      - enabled: true
        name: Ethernet1
        mtu: '1476'
      - enabled: true
        name: Loopback0
      - enabled: true
        name: Loopback1
      - enabled: true
        mtu: '1476'
        name: Tunnel0
      - enabled: true
        name: Ethernet1
      - enabled: true
        name: Tunnel1
      - enabled: true
        name: Ethernet1

Vini re si Ansible nxjerr konfigurimin native nga pajisja Arista dhe e transformon atë në të dhëna të strukturuara, për t'u përdorur si çift standard çelës-vlerë për detyra dhe operacione të mëvonshme.

Të dhënat e interface-it mund të shtohen në variablat e ruajtura të Ansible dhe të përdoren menjëherë ose më vonë si input për modulin e burimit eos_interfaces pa përpunim ose transformim shtesë.

Modulet e burimeve

Pra, kemi nxjerrë të dhënat, normalizuar informacionin, e kemi regjistruar atë në një skemë të standardizuar për struktura të dhënash dhe kemi marrë një burim të gatshëm të së vërtetës. Hurra! Kjo është sigurisht e shkëlqyer, por ne ende duhet ndonjëherë të transformojmë çiftet çelës-vlerë përsëri në konfigurimin specifik që pret platforma specifike e pajisjes. Tani na nevojiten modul për platforma të caktuara për të kryer këto kërkesa të reja për mbledhje të të dhënave dhe normalizim.

ÇfarĂ« Ă«shtĂ« njĂ« modul burimi? Seksionet e konfigurimit tĂ« pajisjes mund tĂ« paraqitet si burime tĂ« ofruara nga kjo pajisje. ModulĂ«t e burimeve rrjetore janĂ« qĂ«llimisht tĂ« kufizuar nĂ« njĂ« burim dhe mund tĂ« rreshtohen si tulla pĂ«r tĂ« krijuar shĂ«rbime komplekse rrjetore. Si rezultat, kĂ«rkesat dhe specifikimet pĂ«r modulĂ«t e burimeve thjeshtohen natyrshĂ«m, pasi moduli i burimit mund tĂ« lexojĂ« dhe tĂ« konfiguroni njĂ« shĂ«rbim tĂ« caktuar rrjeti nĂ« pajisjen rrjet.

Për të shpjeguar se çfarë bën moduli i burimit, le të shohim një shembull playbook-u që tregon një operacion idempotent duke përdorur të dhënat e reja të burimit të rrjetit dhe modulin eos_l3_interface.

- emri: shembuj i fakteve që shtyhen në pajisje.
  hosts: arista
  gather_facts: false
  tasks:
  - emri: merr fakte arista eos
    eos_facts:
      gather_subset: min
      gather_network_resources: l3_interfaces

  - emri: sigurohet që informacioni i adresës IP të jetë i saktë
    eos_l3_interfaces:
      config: "{{ ansible_network_resources['l3_interfaces'] }}"
      register: result

  - emri: sigurohet që konfigurimi nuk ka ndryshuar
    assert:
      that: not result.changed

Siç e shihni, të dhënat e mbledhura nga pajisja dërgohen drejtpërdrejt në modulin përkatës të burimeve pa transformim. Kur ekzekutohet playbooku, ai nxjerr vlerat nga pajisja dhe i krahason ato me ato të pritura. Në këtë shembull, vlerat e marra përputhen me ato të pritura (dmth, kryhet kontrolli i devijimeve të konfigurimit) dhe jepet një mesazh nëse është ndryshuar konfigurimi.

Mënyra më e mirë për të zbuluar devijimin e konfigurimit është të ruani faktet në variabla të ruajtura Ansible dhe t'i përdorni periodicisht ato së bashku me modulin e burimeve në mënyrë verifikimi. Kjo është një metodë e thjeshtë për të parë nëse dikush ka ndryshuar vlerat manualisht. Në shumicën e rasteve, organizatat lejojnë ndryshime dhe konfigurim manual, ndonëse shumë operacione kryhen përmes Ansible Automation.

ÇfarĂ« i ndan modulet e reja tĂ« burimeve nga ato tĂ« mĂ«parshmet?

Për një inxhinier të automatizimit të rrjetit, ekzistojnë 3 dallime kryesore të moduleve të burimeve në Ansible 2.9 nga versionet e mëparshme.

1) Për një burim të caktuar rrjeti (i cili mund të përshkruhet gjithashtu si një seksion konfigurimi), modulet dhe faktet do të zhvillohen në të gjitha sistemet e operative të mbështetura të rrjetit njëherësh. Ne besojmë se, nëse Ansible mbështet konfigurimin e burimit në një platformë rrjeti, ne duhet ta mbështesim atë kudo. Kjo e thjeshton përdorimin e modulit të burimeve, sepse inxhinieri i automatizimit të rrjetit tani mund të konfigurojë burimin (siç është LLDP) në të gjitha sistemet operative të rrjetit me modulet natyrale dhe të mbështetura.

2) Modulet e burimeve tani përfshijnë vlerën e gjendjes.

  • bashkuar: konfigurimi Ă«shtĂ« i bashkuar me konfigurimin e ofruar (nĂ« parazgjedhje);
  • zĂ«vendĂ«suar: konfigurimi i burimit do tĂ« zĂ«vendĂ«sohet me konfigurimin e ofruar;
  • tĂ« mbivendosur: konfigurimi i burimit do tĂ« zĂ«vendĂ«sohet me konfigurimin e ofruar; instancat e tepĂ«rta tĂ« burimeve do tĂ« hiqen;
  • deleted: konfigurimi i burimit do tĂ« hiqet/rikthehet nĂ« parazgjedhje.

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

3) Modulet e burimeve tani përfshijnë vlera të qëndrueshme të kthimit. Kur moduli i burimit rrjetor bën (ose propozon) ndryshimet e nevojshme në pajisjen rrjetore, ai kthen të njëjtat çifte çelësi-vlerë në playbook.

  • para: konfigurimi nĂ« pajisje nĂ« formĂ«n e tĂ« dhĂ«nave tĂ« strukturuara pĂ«rpara detyrĂ«s;
  • pas: nĂ«se pajisja Ă«shtĂ« ndryshuar (ose mund tĂ« ndryshojĂ«, nĂ«se pĂ«rdoret mĂ«nyra e verifikimit), konfigurimi i rezultuar do tĂ« kthehet nĂ« formĂ«n e tĂ« dhĂ«nave tĂ« strukturuara;
  • komanda: çdo komandĂ« konfigurationsh e ekzekutuar nĂ« pajisje pĂ«r ta sjellĂ« atĂ« nĂ« gjendjen e dĂ«shiruar.

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

ÇfarĂ« do tĂ« thotĂ« tĂ« gjitha kĂ«to? Pse Ă«shtĂ« e rĂ«ndĂ«sishme?

Ky postim pĂ«rshkruan shumĂ« koncepte tĂ« komplikuara, por shpresojmĂ« qĂ« nĂ« fund do tĂ« kuptoni mĂ« mirĂ« se çfarĂ« kĂ«rkojnĂ« klientĂ«t korporativĂ« pĂ«r mbledhjen e fakteve, normalizimin e tĂ« dhĂ«nave dhe ciklin e konfigurimit pĂ«r platformĂ«n e automatizimit. Por pse kanĂ« nevojĂ« pĂ«r kĂ«to pĂ«rmirĂ«sime? Aktualisht, shumĂ« organizata po angazhohen nĂ« transformimin digjital pĂ«r ta bĂ«rĂ« mjedisin e tyre IT mĂ« fleksibĂ«l dhe konkurrues. MirĂ« apo keq, shumĂ« inxhinierĂ« rrjetesh po bĂ«hen zhvillues rrjetesh — nga interesi i tyre ose me urdhĂ«r tĂ« drejtorĂ«ve.

Organizatat kuptojnë se automatizimi i modeleve të veçanta rrjetore nuk zgjidh problemin e fragmentimit dhe rrit efikasitetin vetëm deri në një pikë të caktuar. Platforma Red Hat Ansible Automation Platform ofron modele të rrepta dhe normalizuese të të dhënave të burimeve për të menaxhuar programatikisht të dhënat baza në pajisjen rrjetore. Kështu, përdoruesit gradualisht po heqin dorë nga mënyrat individuale të konfigurimit në favor të metodave më moderne me theks tek teknologjitë (p.sh. adresat IP, VLAN, LLDP etj.), dhe jo nga realizimi i konkret i shitësit.

A do të thotë kjo se ditët e moduleve të besueshëm dhe të provuar të komandave dhe configurimeve kanë kaluar? Aspak. Modulet e pritshme të burimeve të rrjetit nuk do të aplikohen në të gjitha rastet dhe për çdo ofrues, kështu që modulet e komandave dhe configurimeve do të nevojiten ende nga inxhinierët e rrjetit për realizime të caktuara. Qëllimi i moduleve të burimeve është të thjeshtojë modelet e mëdha Jinja dhe të normalizojë configurimet e pa strukturizuara të pajisjeve në një format të strukturuar JSON. Me modulet e burimeve, rrjetet ekzistuese do të kenë më të lehtë të transformojnë konfigurimin e tyre në çifte kyç-vlerë të strukturuara, të cilat do të përbëjnë një burim të vërtetë të lexueshëm. Duke përdorur çifte të strukturuara kyç-vlerë, mund të kaloni nga ekzekutimi i konfigurimeve në çdo pajisje në punën me të dhëna të strukturuara të pavarura dhe të vendosni rrjetet në qendër të qasjes "infrastrukturë si kod".

Cilat module burimesh do të shfaqen në Ansible Engine 2.9?

Para se të flasim në detaje për atë që do të përmbajë Ansible 2.9, le të kujtojmë se si e kemi ndarë të gjithë volumet e punës.

Ne kemi identifikuar 7 kategori dhe secilës i kemi caktuar disa burime rrjeti:

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

Shënim: burimet e shënuara me gegë janë planifikuar dhe implementuar në Ansible 2.9.
Bashkëngjitur përmes feedback-ut nga klientët korporatë dhe nga komuniteti, ishte e arsyeshme të merrej fillimisht me modulet që lidhen me protokollet topologjike të rrjetit, virtualizimin dhe ndërfaqet.
Modulet e mëposhtme të burimeve janë zhvilluar nga ekipi i Ansible Network dhe përputhen me platformat që mbështet Red Hat:

Librat e Brendshme. Funksionet e rrjetit në Ansible Engine 2.9 të ri

Modulet e mëposhtme janë zhvilluar nga komuniteti Ansible:

  • exos_lldp_global — nga Extreme Networks.
  • nxos_bfd_interfaces — nga Cisco.
  • Siç mund ta shihni, koncepti i moduleve tĂ« burimeve pĂ«rputhet me strategjinĂ« tonĂ« pĂ«r orientim ndaj platformave. Kjo do tĂ« thotĂ« qĂ« ne pĂ«rfshijmĂ« cilĂ«sitĂ« dhe funksionet e nevojshme nĂ« Ansible vetĂ«, pĂ«r tĂ« mbĂ«shtetur standardizimin nĂ« zhvillimin e moduleve tĂ« rrjetit, dhe gjithashtu pĂ«r tĂ« thjeshtuar punĂ«n e pĂ«rdoruesve nĂ« nivelin e roleve dhe playbook-eve tĂ« Ansible. PĂ«r tĂ« zgjeruar zhvillimin e moduleve tĂ« burimeve, ekipi i Ansible ka lĂ«shuar mjetin Module Builder. — nga Cisco.

Planet për Ansible 2.10 dhe më tej

Pas lëshimit të Ansible 2.9, ne do të merremi me grupin tjetër të moduleve të burimeve për Ansible 2.10, të cilat do të mund të përdoren për konfigurimin e mëtejshëm të topologjisë dhe politikës së rrjetit, për shembull

ACL, OSPF dhe BGP. ACL, OSPF dhe BGPPlani i zhvillimit mund të korrigjohet ende, prandaj, nëse keni komente, na njoftoni në komunitetin Ansible Network.

Burimet dhe fillimi i punës

Shtypi për Ansible Automation Platform
Blogu i Ansible Automation Platform
E ardhmja e shpërndarjes së përmbajtjes në Ansible
Reflektime mbi ndryshimin e strukturës së projektit Ansible

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster