The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

Predstojeće izdanje Red Hat Ansible Engine 2.9 donosi uzbudljiva poboljšanja, od kojih su neka razmotrena u ovom članku. Kao i uvijek, razvijali smo poboljšanja Ansible mreže otvoreno, uz podršku zajednice. Pridružite nam se - pogledajte ploča za izdavanje na GitHubu i proučiti razvojni plan za izdanje Red Hat Ansible Engine 2.9 na wiki stranici za Ansible Network.

Kao što smo nedavno objavili, Red Hat Ansible Automation Platforma sada uključuje Ansible Tower, Ansible Engine i sav Ansible Network sadržaj. Danas se najpopularnije mrežne platforme implementiraju preko Ansible modula. Na primjer:

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

Za kompletnu listu platformi koje Red Hat u potpunosti podržava putem pretplate na Ansible Automation, objavljeno ovdje.

Šta smo naučili

U protekle četiri godine naučili smo mnogo o razvoju platforme za automatizaciju mreže. I to smo naučili kako artefakti platforme se koriste u Ansible playbookovima i ulogama od strane krajnjih korisnika. A evo šta smo saznali:

  • Organizacije automatizuju uređaje ne samo jednog, već mnogih dobavljača.
  • Automatizacija nije samo tehnički fenomen, već i kulturni fenomen.
  • Automatizacija mreža u velikim razmjerima je teža nego što se čini zbog osnovnih arhitektonskih principa dizajna automatizacije.

Kada smo prije više od godinu dana razgovarali o našim dugoročnim planovima rasta, naši korporativni klijenti su tražili sljedeće:

  • Prikupljanje činjenica mora biti bolje standardizirano i usklađeno s tokovima rada automatizacije na svim uređajima.
  • Ažuriranje konfiguracija na uređaju također mora biti standardizirano i konzistentno kako bi Ansible moduli upravljali drugom polovinom ciklusa nakon prikupljanja činjenica.
  • Potrebne su nam rigorozne i podržane metode za pretvaranje konfiguracije uređaja u strukturirane podatke. Na osnovu toga, izvor istine može biti premješten sa mrežnog uređaja.

Poboljšanja činjenica

Prikupljanje činjenica sa mrežnih uređaja koristeći Ansible često se dešava nasumično. Web-bazirane platforme imaju različite stepene mogućnosti prikupljanja činjenica, ali imaju malo ili nimalo funkcionalnosti za raščlanjivanje i standardizaciju predstavljanja podataka u parovima ključ/vrijednost. Čitaj post Kena Celenze o tome koliko teško i bolno može biti analizirati i standardizirati činjenične podatke.

Možda ste primijetili da radimo na ulozi Ansible Network Engine. Naravno, 24 preuzimanja kasnije, uloga Network Engine je brzo postala jedna od najpopularnijih uloga Ansible Galaxy-a za scenarije mrežne automatizacije. Prije nego što smo veliki dio ovoga premjestili u Ansible 2.8 kako bismo se pripremili za ono što bi bilo potrebno u Ansibleu 2.9, ova Ansible uloga je pružila prvi skup alata koji su pomogli u raščlanjivanju komandi, upravljanju komandama i prikupljanju podataka za mrežne uređaje.

Ako znate kako koristiti Network Engine, ovo je vrlo efikasan način za prikupljanje, raščlanjivanje i standardizaciju podataka o činjenicama za korištenje u Ansibleu. Nedostatak ove uloge je što morate kreirati čitav niz parsera za svaku platformu i za sve mrežne aktivnosti. Da biste razumjeli koliko je teško kreirati, slati i održavati parsere, pogledajte Više od 1200 parsera od momaka iz Cisco-a.

Ukratko, dobijanje činjenica od uređaja i njihovo normaliziranje u parove ključ/vrijednost je od suštinskog značaja za automatizaciju u velikim razmjerima, ali postizanje toga je teško kada imate mnogo dobavljača i mrežnih platformi.

Svaki modul mrežnih činjenica u Ansibleu 2.9 sada može analizirati konfiguraciju mrežnog uređaja i vratiti strukturirane podatke - bez dodatnih biblioteka, Ansible uloga ili prilagođenih parsera.

Od Ansible 2.9, svaki put kada se objavi ažurirani mrežni modul, modul činjenica se poboljšava kako bi pružio podatke o ovom dijelu konfiguracije. Odnosno, razvoj činjenica i modula sada se odvija istim tempom, i oni će uvijek imati zajedničku strukturu podataka.

Konfiguracija resursa na mrežnom uređaju može se dohvatiti i pretvoriti u strukturirane podatke na dva načina. Na oba načina, možete prikupiti i transformirati određenu listu resursa koristeći novu ključnu riječ gather_network_resources. Nazivi resursa odgovaraju nazivima modula, što je vrlo zgodno.

Prilikom prikupljanja činjenica:

Korištenje ključne riječi gather_facts možete dohvatiti trenutnu konfiguraciju uređaja na početku priručnika, a zatim je koristiti u cijeloj knjizi. Odredite pojedinačne resurse koji će se preuzeti s uređaja.

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

Možda ste primijetili nešto novo u ovim primjerima, naime - gather_facts: true je sada dostupno za izvorno prikupljanje činjenica za mrežne uređaje.

Direktno korištenje mrežnog modula činjenica:

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

Priručnik vraća sljedeće činjenice o interfejsu:

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

Obratite pažnju na to kako Ansible preuzima izvornu konfiguraciju sa Arista uređaja i transformiše je u strukturirane podatke za upotrebu kao standardne parove ključ/vrijednost za nizvodne zadatke i operacije.

Činjenice sučelja mogu se dodati u Ansible pohranjene varijable i koristiti odmah ili kasnije kao ulaz u modul resursa eos_interfaces bez dodatne obrade ili konverzije.

Moduli resursa

Dakle, izdvojili smo činjenice, normalizirali podatke, uklopili ih u standardizirani dijagram interne strukture podataka i dobili gotov izvor istine. Ura! Ovo je, naravno, sjajno, ali još uvijek moramo nekako pretvoriti parove ključ/vrijednost nazad u specifičnu konfiguraciju koju očekuje određena platforma uređaja. Sada su nam potrebni moduli specifični za platformu da ispunimo ove nove zahtjeve za prikupljanje činjenica i normalizaciju.

Šta je modul resursa? O odjeljcima konfiguracije uređaja možete razmišljati kao o resursima koje pruža taj uređaj. Moduli mrežnih resursa su namjerno ograničeni na jedan resurs i mogu se naslagati kao građevni blokovi za konfiguriranje složenih mrežnih usluga. Kao rezultat toga, zahtjevi i specifikacija za modul resursa su prirodno pojednostavljeni, budući da modul resursa može čitati и konfigurirati određenu mrežnu uslugu na mrežnom uređaju.

Da bismo objasnili što radi modul resursa, pogledajmo primjer priručnika koji prikazuje idempodentnu operaciju koristeći nove činjenice o mrežnim resursima i modul 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

Kao što vidite, podaci prikupljeni sa uređaja se prenose direktno u odgovarajući modul resursa bez konverzije. Kada se pokrene, playbook preuzima vrijednosti sa uređaja i upoređuje ih sa očekivanim. U ovom primjeru vraćene vrijednosti su očekivane (to jest, provjerava odstupanja u konfiguraciji) i izvještava da li se konfiguracija promijenila.

Idealan način za otkrivanje odstupanja konfiguracije je pohranjivanje činjenica u Ansible pohranjenim varijablama i povremeno ih korištenje s modulom resursa u načinu inspekcije. Ovo je jednostavan način da vidite da li je neko ručno promijenio vrijednosti. U većini slučajeva, organizacije dozvoljavaju promjene i konfiguraciju ručno, iako se mnoge operacije izvode kroz Ansible Automation.

Po čemu se novi moduli resursa razlikuju od prethodnih?

Za inženjera mrežne automatizacije, postoje 3 glavne razlike između modula resursa u Ansibleu 2.9 i prethodnim verzijama.

1) Za dati mrežni resurs (koji se također može smatrati dijelom konfiguracije), moduli i činjenice će se razvijati u svim podržanim mrežnim operativnim sistemima istovremeno. Mislimo da ako Ansible podržava konfiguraciju resursa na jednoj mrežnoj platformi, trebali bismo je podržavati svuda. Ovo pojednostavljuje upotrebu modula resursa jer inženjer mrežne automatizacije sada može konfigurirati resurs (kao što je LLDP) na svim mrežnim operativnim sistemima s izvornim i podržanim modulima.

2) Moduli resursa sada uključuju vrijednost stanja.

  • merged: konfiguracija je spojena sa datom konfiguracijom (podrazumevano);
  • replaced: Konfiguracija resursa će biti zamijenjena navedenom konfiguracijom;
  • overridden: Konfiguracija resursa će biti zamijenjena navedenom konfiguracijom; nepotrebne instance resursa će biti izbrisane;
  • deleted: Konfiguracija resursa će se izbrisati/vratiti na zadane vrijednosti.

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

3) Moduli resursa sada uključuju stabilne povratne vrijednosti. Kada modul mrežnih resursa napravi (ili predloži) potrebne promjene na mrežnom uređaju, vraća iste parove ključ/vrijednost u playbook.

  • before: konfiguracija na uređaju u obliku strukturiranih podataka prije zadatka;
  • after: ako se uređaj promijenio (ili se može promijeniti ako se koristi način testiranja), rezultirajuća konfiguracija će biti vraćena kao strukturirani podaci;
  • commands: Sve naredbe za konfiguraciju se pokreću na uređaju kako bi ga dovele u željeno stanje.

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

Šta sve ovo znači? Zašto je to važno?

Ovaj post pokriva mnogo složenih koncepata, ali nadamo se da ćete na kraju bolje razumjeti šta poslovni klijenti traže u stvari prikupljanje, normalizaciju podataka i konfiguraciju petlje za platformu za automatizaciju. Ali zašto su im potrebna ova poboljšanja? Mnoge organizacije sada teže digitalnoj transformaciji kako bi svoje IT okruženje učinile agilnijim i konkurentnijim. U dobru i zlu, mnogi mrežni inženjeri postaju mrežni programeri ili iz vlastitog interesa ili po nalogu uprave.

Organizacije shvaćaju da automatizacija pojedinačnih mrežnih šablona ne rješava problem silosa već samo u određenoj mjeri povećava efikasnost. Red Hat Ansible Automation Platform pruža rigorozne i normativne modele podataka resursa za programsko upravljanje osnovnim podacima na mrežnom uređaju. Odnosno, korisnici postepeno napuštaju pojedinačne metode konfiguracije u korist modernijih metoda s naglaskom na tehnologije (na primjer, IP adrese, VLAN, LLDP, itd.), a ne na implementaciju specifičnog dobavljača.

Znači li to da su dani pouzdanih i dokazanih komandnih modula i konfiguracije odbrojani? Ni u kom slučaju. Očekivani moduli mrežnih resursa neće biti primjenjivi u svim slučajevima ili za svakog dobavljača, tako da će komandni i konfiguracijski moduli i dalje biti potrebni mrežnim inženjerima za određene implementacije. Svrha modula resursa je da pojednostave velike Jinja šablone i normalizuju nestrukturirane konfiguracije uređaja u strukturirani JSON format. Uz module resursa, postojećim mrežama će biti lakše da transformišu svoju konfiguraciju u strukturirane parove ključ/vrijednost koji predstavljaju izvor istine koji se lako čita. Koristeći strukturirane parove ključ/vrijednost, možete prijeći od pokretanja konfiguracija na svakom uređaju na rad s neovisnim strukturiranim podacima i dovesti mreže u prvi plan pristupa infrastrukture kao koda.

Koji moduli resursa će biti dostupni u Ansible Engine-u 2.9?

Prije nego što vam detaljno ispričamo šta će se dogoditi u Ansibleu 2.9, prisjetimo se kako smo podijelili cijeli obim posla.

Identifikovali smo 7 kategorija i svakoj dodelili specifične mrežne resurse:

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

Napomena: Resursi označeni masnim slovima planirani su i implementirani u Ansible 2.9.
Na osnovu povratnih informacija od poslovnih korisnika i zajednice, bilo je logično da se prvo pozabavimo tim modulima koji se odnose na protokole mrežne topologije, virtuelizaciju i interfejse.
Sljedeće module resursa razvio je tim Ansible Networka i odgovaraju platformama koje podržava Red Hat:

The Inside Playbook. Mrežne funkcije u novom Ansible Engine-u 2.9

Ansible zajednica je razvila sljedeće module:

  • exos_lldp_global - od Extreme Networks.
  • nxos_bfd_interfaces - od Cisco
  • nxos_telemetry - od Cisco

Kao što možete vidjeti, koncept modula resursa se uklapa u našu platformu usmjerenu strategiju. Odnosno, mi uključujemo potrebne mogućnosti i funkcije u sam Ansible kako bismo podržali standardizaciju u razvoju mrežnih modula, kao i pojednostavili rad korisnika na nivou Ansible uloga i priručnika. Kako bi proširio razvoj modula resursa, Ansible tim je objavio alat Module Builder.

Planovi za Ansible 2.10 i dalje

Kada Ansible 2.9 bude objavljen, radit ćemo na sljedećem skupu modula resursa za Ansible 2.10, koji se može koristiti za dalje konfiguriranje mrežne topologije i politike, npr. ACL, OSPF i BGP. Razvojni plan se još uvijek može prilagoditi, pa ako imate primjedbu, prijavite to Ansible Network zajednica.

Resursi i početak

Saopštenje za javnost o Ansible Automation Platformi
Blog Ansible Automation Platforme
Budućnost isporuke sadržaja u Ansibleu
Razmišljanja o promjeni Ansible strukture projekta

izvor: www.habr.com

Dodajte komentar