The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

Nadchádzajúce vydanie Red Hat Ansible Engine 2.9 prináša vzrušujúce vylepšenia, z ktorých niektoré sú uvedené v tomto článku. Ako vždy, vylepšenia Ansible Network vyvíjame otvorene, s podporou komunity. Pridajte sa k nám – pozrite sa problémová tabuľa na GitHub a preštudujte si plán rozvoja pre vydanie Red Hat Ansible Engine 2.9 na stránke wiki pre Sieť Ansible.

Ako sme nedávno oznámili, Red Hat Ansible Automation Platform teraz zahŕňa Ansible Tower, Ansible Engine a všetok obsah Ansible Network. V súčasnosti sú najpopulárnejšie sieťové platformy implementované prostredníctvom modulov Ansible. Napríklad:

  • Arista EOS
  • Cisco IOS
  • Cisco IOS XR
  • Operačný systém Cisco NX
  • Juniper Junos
  • VyOS

Úplný zoznam platforiem, ktoré Red Hat plne podporuje prostredníctvom predplatného Ansible Automation, uverejnené tu.

Čo sme sa naučili

Za posledné štyri roky sme sa veľa naučili o vývoji platformy na automatizáciu siete. To sme sa naučili aj my ako artefakty platformy používajú koncoví používatelia v herných knihách a rolách Ansible. A tu je to, čo sme zistili:

  • Organizácie automatizujú zariadenia nielen od jedného, ​​ale od mnohých dodávateľov.
  • Automatizácia nie je len technický, ale aj kultúrny fenomén.
  • Automatizácia sietí vo veľkom meradle je ťažšia, než sa zdá, kvôli základným architektonickým princípom návrhu automatizácie.

Keď sme pred vyše rokom diskutovali o našich dlhodobých plánoch rastu, naši korporátni klienti žiadali nasledovné:

  • Zhromažďovanie faktov musí byť lepšie štandardizované a zosúladené s automatizačnými pracovnými postupmi vo všetkých zariadeniach.
  • Aktualizácia konfigurácií na zariadení musí byť tiež štandardizovaná a konzistentná, aby moduly Ansible zvládli druhú polovicu cyklu po zhromaždení faktov.
  • Potrebujeme prísne a podporované metódy na konverziu konfigurácie zariadenia na štruktúrované údaje. Na tomto základe je možné presunúť zdroj pravdy zo sieťového zariadenia.

Vylepšenia faktov

Zhromažďovanie faktov zo sieťových zariadení pomocou Ansible sa často deje náhodne. Webové platformy majú rôzne stupne možností zhromažďovania faktov, ale majú malú alebo žiadnu funkčnosť na analýzu a štandardizáciu reprezentácie údajov v pároch kľúč – hodnota. Čítať pošta Ken Celenza o tom, aké ťažké a bolestivé môže byť analyzovať a štandardizovať faktické údaje.

Možno ste si všimli, že pracujeme na úlohe Ansible Network Engine. Prirodzene, po 24 2.8 stiahnutiach neskôr sa rola Network Engine rýchlo stala jednou z najpopulárnejších rolí Ansible v Ansible Galaxy pre scenáre automatizácie siete. Predtým, ako sme mnohé z toho presunuli do Ansible 2.9, aby sme sa pripravili na to, čo by bolo potrebné v Ansible XNUMX, táto rola Ansible poskytla prvú sadu nástrojov, ktoré pomohli analyzovať príkazy, spravovať príkazy a zhromažďovať údaje pre sieťové zariadenia.

Ak viete, ako používať Network Engine, je to veľmi efektívny spôsob zhromažďovania, analýzy a štandardizácie údajov o faktoch na použitie v Ansible. Nevýhodou tejto roly je, že musíte vytvoriť celý rad analyzátorov pre každú platformu a pre všetky sieťové aktivity. Ak chcete pochopiť, aké ťažké je vytvárať, odosielať a udržiavať analyzátory, pozrite sa na Viac ako 1200 syntaktických analyzátorov od chalanov z Cisco.

Stručne povedané, získavanie faktov zo zariadení a ich normalizácia do párov kľúč – hodnota je nevyhnutná pre automatizáciu vo veľkom rozsahu, ale dosiahnuť to je ťažké, keď máte veľa dodávateľov a sieťových platforiem.

Každý modul sieťových faktov v Ansible 2.9 teraz dokáže analyzovať konfiguráciu sieťového zariadenia a vrátiť štruktúrované dáta – bez ďalších knižníc, rolí Ansible alebo vlastných syntaktických analyzátorov.

Od Ansible 2.9 je pri každom vydaní aktualizovaného sieťového modulu vylepšený faktický modul, aby poskytoval údaje o tejto časti konfigurácie. To znamená, že vývoj faktov a modulov teraz prebieha rovnakým tempom a vždy budú mať spoločnú dátovú štruktúru.

Konfiguráciu prostriedkov na sieťovom zariadení je možné získať a previesť na štruktúrované dáta dvoma spôsobmi. Oboma spôsobmi môžete zhromaždiť a transformovať konkrétny zoznam zdrojov pomocou nového kľúčového slova gather_network_resources. Názvy zdrojov sa zhodujú s názvami modulov, čo je veľmi výhodné.

Pri zhromažďovaní faktov:

Pomocou kľúčového slova gather_facts aktuálnu konfiguráciu zariadenia môžete získať na začiatku príručky a potom ju použiť v celej príručke. Zadajte jednotlivé zdroje, ktoré sa majú zo zariadenia získať.

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

Možno ste si v týchto príkladoch všimli niečo nové, konkrétne - gather_facts: true je teraz k dispozícii pre natívne zhromažďovanie faktov pre sieťové zariadenia.

Priame použitie modulu sieťových faktov:

- name: collect interface configuration facts
  eos_facts:
    gather_subset: min
    gather_network_resources:
    - interfaces

Príručka vracia nasledujúce fakty o rozhraní:

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

Všimnite si, ako Ansible získava natívnu konfiguráciu zo zariadenia Arista a transformuje ju na štruktúrované dáta, ktoré sa použijú ako štandardné páry kľúč – hodnota pre následné úlohy a operácie.

Fakty rozhrania možno pridať do uložených premenných Ansible a použiť ich okamžite alebo neskôr ako vstup do modulu zdrojov eos_interfaces bez dodatočného spracovania alebo konverzie.

Moduly zdrojov

Takže sme extrahovali fakty, normalizovali údaje, vložili ich do štandardizovaného diagramu vnútornej štruktúry údajov a dostali sme hotový zdroj pravdy. Hurá! To je, samozrejme, skvelé, ale stále musíme páry kľúč-hodnota nejako previesť späť na špecifickú konfiguráciu, ktorú konkrétna platforma zariadenia očakáva. Teraz potrebujeme moduly špecifické pre platformu, aby sme splnili tieto nové požiadavky na zhromažďovanie faktov a normalizáciu.

Čo je zdrojový modul? Sekcie konfigurácie zariadenia si môžete predstaviť ako zdroje poskytované týmto zariadením. Moduly sieťových prostriedkov sú zámerne obmedzené na jeden zdroj a možno ich poskladať ako stavebné bloky na konfiguráciu komplexných sieťových služieb. V dôsledku toho sú požiadavky a špecifikácie pre modul zdrojov prirodzene zjednodušené, pretože modul zdrojov dokáže čítať и konfigurovať konkrétnu sieťovú službu na sieťovom zariadení.

Aby sme vysvetlili, čo modul zdrojov robí, pozrime sa na príklad zošita, ktorý ukazuje idempodentnú operáciu pomocou nových faktov a modulu o sieťových zdrojoch eos_l3_interface.

- name: example of facts being pushed right back to device.
  hosts: arista
  gather_facts: false
  tasks:
  - name: grab arista eos facts
    eos_facts:
      gather_subset: min
      gather_network_resources: l3_interfaces

  - name: ensure that the IP address information is accurate
    eos_l3_interfaces:
      config: "{{ ansible_network_resources['l3_interfaces'] }}"
      register: result

  - name: ensure config did not change
    assert:
      that: not result.changed

Ako vidíte, údaje zozbierané zo zariadenia sa prenesú priamo do príslušného zdrojového modulu bez konverzie. Po spustení playbook načíta hodnoty zo zariadenia a porovná ich s očakávanými hodnotami. V tomto príklade sú vrátené hodnoty podľa očakávania (to znamená, že kontroluje odchýlky v konfigurácii) a informuje o tom, či sa konfigurácia zmenila.

Ideálny spôsob, ako zistiť posun konfigurácie, je ukladať fakty do uložených premenných Ansible a pravidelne ich používať s modulom zdrojov v režime kontroly. Toto je jednoduchý spôsob, ako zistiť, či niekto manuálne zmenil hodnoty. Vo väčšine prípadov organizácie umožňujú zmeny a konfiguráciu manuálne, hoci mnohé operácie sa vykonávajú prostredníctvom Ansible Automation.

Ako sa nové moduly zdrojov líšia od predchádzajúcich?

Pre inžiniera sieťovej automatizácie existujú 3 hlavné rozdiely medzi modulmi zdrojov v Ansible 2.9 a predchádzajúcimi verziami.

1) Pre daný sieťový zdroj (ktorý možno považovať aj za konfiguračnú časť) sa moduly a fakty budú vyvíjať naprieč všetkými podporovanými sieťovými operačnými systémami súčasne. Myslíme si, že ak Ansible podporuje konfiguráciu zdrojov na jednej sieťovej platforme, mali by sme ju podporovať všade. To zjednodušuje používanie modulov prostriedkov, pretože inžinier automatizácie siete môže teraz nakonfigurovať prostriedok (napríklad LLDP) na všetkých sieťových operačných systémoch s natívnymi a podporovanými modulmi.

2) Moduly prostriedkov teraz obsahujú hodnotu stavu.

  • merged: konfigurácia sa zlúči s poskytnutou konfiguráciou (predvolené);
  • replaced: Konfigurácia prostriedkov bude nahradená poskytnutou konfiguráciou;
  • overridden: Konfigurácia prostriedkov bude nahradená poskytnutou konfiguráciou; nepotrebné inštancie zdrojov budú odstránené;
  • deleted: Konfigurácia prostriedkov bude vymazaná/obnovená na predvolenú hodnotu.

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

3) Moduly zdrojov teraz obsahujú stabilné návratové hodnoty. Keď modul sieťového zdroja vykoná (alebo navrhne) potrebné zmeny na sieťovom zariadení, vráti rovnaké páry kľúč – hodnota do playbooku.

  • before: konfigurácia na zariadení vo forme štruktúrovaných dát pred úlohou;
  • after: ak sa zariadenie zmenilo (alebo sa môže zmeniť, ak sa použije testovací režim), výsledná konfigurácia sa vráti ako štruktúrované dáta;
  • commands: Na zariadení sa spúšťajú akékoľvek konfiguračné príkazy, ktoré ho privedú do požadovaného stavu.

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

Čo to všetko znamená? Prečo je to dôležité?

Tento príspevok pokrýva množstvo zložitých konceptov, ale dúfame, že nakoniec budete lepšie rozumieť tomu, čo podnikoví klienti v skutočnosti požadujú zber, normalizáciu údajov a konfiguráciu slučky pre automatizačnú platformu. Prečo však potrebujú tieto vylepšenia? Mnoho organizácií v súčasnosti vykonáva digitálnu transformáciu, aby bolo ich IT prostredie agilnejšie a konkurencieschopnejšie. Či už je to lepšie alebo horšie, mnohí sieťoví inžinieri sa stávajú vývojármi sietí buď z vlastného záujmu, alebo na príkaz manažmentu.

Organizácie si uvedomujú, že automatizácia jednotlivých sieťových šablón nerieši problém síl a len do určitej miery zvyšuje efektivitu. Red Hat Ansible Automation Platform poskytuje prísne a normatívne dátové modely zdrojov na programovú správu základných údajov na sieťovom zariadení. To znamená, že používatelia postupne opúšťajú jednotlivé konfiguračné metódy v prospech modernejších metód s dôrazom na technológie (napríklad IP adresy, VLAN, LLDP atď.), a nie na implementáciu konkrétneho dodávateľa.

Znamená to, že dni spoľahlivých a overených veliteľských modulov a konfigurácie sú zrátané? V žiadnom prípade. Očakávané moduly sieťových prostriedkov nebudú použiteľné vo všetkých prípadoch alebo pre každého dodávateľa, takže príkazové a konfiguračné moduly budú sieťoví inžinieri stále potrebovať pre určité implementácie. Účelom zdrojových modulov je zjednodušiť veľké šablóny Jinja a normalizovať neštruktúrované konfigurácie zariadení do štruktúrovaného formátu JSON. S modulmi zdrojov bude pre existujúce siete jednoduchšie transformovať svoju konfiguráciu do štruktúrovaných párov kľúč – hodnota, ktoré predstavujú ľahko čitateľný zdroj pravdy. Pomocou štruktúrovaných párov kľúč – hodnota môžete prejsť od spustených konfigurácií na každom zariadení k práci s nezávislými štruktúrovanými údajmi a dostať siete do popredia prístupu infraštruktúry ako kódu.

Aké moduly zdrojov pribudnú v Ansible Engine 2.9?

Predtým, než vám podrobne povieme, čo sa bude diať v Ansible 2.9, pripomeňme si, ako sme si rozdelili celý rozsah práce.

Identifikovali sme 7 kategórií a každej sme priradili špecifické sieťové zdroje:

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

Poznámka: Zdroje označené tučným písmom boli naplánované a implementované v Ansible 2.9.
Na základe spätnej väzby od podnikových zákazníkov a komunity bolo logické najprv sa zaoberať modulmi súvisiacimi s protokolmi topológie siete, virtualizáciou a rozhraniami.
Nasledujúce moduly zdrojov boli vyvinuté tímom Ansible Network a zodpovedajú platformám podporovaným Red Hat:

The Inside Playbook. Sieťové funkcie v novom Ansible Engine 2.9

Komunita Ansible vyvinula nasledujúce moduly:

  • exos_lldp_global - od Extreme Networks.
  • nxos_bfd_interfaces - od spoločnosti Cisco
  • nxos_telemetry - od spoločnosti Cisco

Ako vidíte, koncept modulov zdrojov zapadá do našej stratégie zameranej na platformu. To znamená, že do samotného Ansible zahrnieme potrebné schopnosti a funkcie na podporu štandardizácie pri vývoji sieťových modulov a tiež na zjednodušenie práce používateľov na úrovni Ansible rolí a playbookov. Na rozšírenie vývoja modulov zdrojov uvoľnil tím Ansible nástroj Module Builder.

Plány pre Ansible 2.10 a vyššie

Po vydaní Ansible 2.9 budeme pracovať na ďalšej sade zdrojových modulov pre Ansible 2.10, ktoré možno použiť na ďalšiu konfiguráciu sieťovej topológie a politiky, napr. ACL, OSPF a BGP. Plán rozvoja je možné ešte upraviť, takže ak máte pripomienky, nahláste ich Komunita Ansible Network.

Zdroje a začiatok

Tlačová správa o Ansible Automation Platform
Blog Ansible Automation Platform
Budúcnosť doručovania obsahu v Ansible
Úvahy o zmene štruktúry projektu Ansible

Zdroj: hab.com

Pridať komentár