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

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

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

Kao što smo nedavno najavili, Red Hat Ansible Automation Platforma sada uključuje Ansible Tower, Ansible Engine i sav sadržaj Ansible mreže. Danas su najpopularnije mrežne platforme implementirane kroz Ansible module. Na primjer:

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

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

Što smo naučili

Tijekom protekle četiri godine naučili smo puno o razvoju platforme za automatizaciju mreže. Naučili smo i to kao krajnji korisnici koriste artefakte platforme u igrama i ulogama Ansiblea. A evo što smo saznali:

  • Organizacije automatiziraju uređaje ne samo jednog, već više dobavljača.
  • Automatizacija nije samo tehnički fenomen, već i kulturni.
  • Automatiziranje velikih mreža teže je nego što se čini zbog temeljnih arhitektonskih načela dizajna automatizacije.

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

  • Prikupljanje činjenica mora biti bolje standardizirano i usklađeno s tijekovima rada automatizacije na svim uređajima.
  • Ažuriranje konfiguracija na uređaju također treba biti standardizirano i dosljedno tako da Ansible moduli obrađuju drugu polovicu ciklusa nakon prikupljanja činjenica.
  • Potrebne su nam rigorozne i podržane metode za pretvaranje konfiguracije uređaja u strukturirane podatke. Na temelju toga, izvor istine može se premjestiti s mrežnog uređaja.

Poboljšanja činjenica

Prikupljanje činjenica s mrežnih uređaja pomoću Ansiblea često se događa nasumično. Mrežne platforme imaju različite stupnjeve mogućnosti prikupljanja činjenica, ali imaju malo ili nimalo funkcionalnosti za raščlanjivanje i standardiziranje predstavljanja podataka ključ-vrijednost. Čitati pošta Ken Celenza 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, nakon 24 preuzimanja kasnije, uloga Network Enginea brzo je postala jedna od najpopularnijih Ansible uloga u Ansible Galaxyju za scenarije mrežne automatizacije. Prije nego što smo veći dio toga premjestili u Ansible 2.8 kako bismo se pripremili za ono što će biti potrebno u Ansibleu 2.9, ova uloga Ansiblea pružila je prvi set alata za pomoć pri raščlanjivanju naredbi, upravljanju naredbama i prikupljanju podataka za mrežne uređaje.

Ako znate kako koristiti Network Engine, ovo je vrlo učinkovit način za prikupljanje, raščlanjivanje i standardiziranje podataka o činjenicama za upotrebu u Ansibleu. Nedostatak ove uloge je što trebate stvoriti čitavu hrpu 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 ljudi iz Cisca.

Ukratko, dobivanje činjenica s uređaja i njihovo normaliziranje u parove ključ-vrijednost ključno je za automatizaciju na skali, ali to je teško postići ako imate mnogo dobavljača i mrežnih platformi.

Svaki mrežni modul 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 odjeljku konfiguracije. Odnosno, razvoj činjenica i modula sada se odvija istim tempom i uvijek će 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đeni popis resursa pomoću nove ključne riječi gather_network_resources. Nazivi resursa odgovaraju nazivima modula, što je vrlo zgodno.

Dok prikupljamo činjenice:

Korištenje ključne riječi gather_facts možete dohvatiti trenutnu konfiguraciju uređaja na početku priručnika, a zatim ga koristiti kroz cijeli priručnik. Odredite pojedinačne resurse koje treba dohvatiti 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 sada je dostupan za izvorno prikupljanje činjenica za mrežne uređaje.

Izravno 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 sučelju:

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

Primijetite kako Ansible dohvaća izvornu konfiguraciju s uređaja Arista i transformira je u strukturirane podatke za korištenje kao standardne parove ključ-vrijednost za nizvodne zadatke i operacije.

Činjenice o sučelju mogu se dodati Ansible pohranjenim varijablama i koristiti odmah ili kasnije kao ulaz u modul resursa eos_interfaces bez dodatne obrade ili pretvorbe.

Moduli resursa

Dakle, izdvojili smo činjenice, normalizirali podatke, uklopili ih u standardizirani interni dijagram strukture podataka i dobili gotov izvor istine. hura! Ovo je, naravno, sjajno, ali ipak moramo nekako pretvoriti parove ključ-vrijednost natrag u specifičnu konfiguraciju koju određena platforma uređaja očekuje. Sada su nam potrebni moduli specifični za platformu kako bismo ispunili te nove zahtjeve za prikupljanje činjenica i normalizaciju.

Što 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 namjerno su ograničeni na jedan resurs i mogu se slagati poput građevnih blokova za konfiguraciju složenih mrežnih usluga. Kao rezultat toga, zahtjevi i specifikacije 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.

Kako bismo objasnili što modul resursa radi, pogledajmo primjer priručnika koji prikazuje idempodentnu operaciju pomoću novih mrežnih resursa i činjenica o modulu 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 s uređaja prenose se izravno u odgovarajući modul resursa bez konverzije. Kada se pokrene, playbook dohvaća vrijednosti s uređaja i uspoređuje ih s očekivanim vrijednostima. U ovom primjeru, vraćene vrijednosti su očekivane (to jest, provjerava odstupanja u konfiguraciji) i izvješćuje je li se konfiguracija promijenila.

Idealan način za otkrivanje pomaka konfiguracije je pohranjivanje činjenica u pohranjene varijable Ansiblea i njihovo povremeno korištenje s modulom resursa u načinu pregleda. Ovo je jednostavna metoda da vidite je li netko ručno promijenio vrijednosti. U većini slučajeva organizacije dopuštaju 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 Ansible 2.9 i prethodnim verzijama.

1) Za određeni mrežni resurs (koji se također može smatrati konfiguracijskim odjeljkom), moduli i činjenice će se razvijati u svim podržanim mrežnim operativnim sustavima istovremeno. Mislimo da ako Ansible podržava konfiguraciju resursa na jednoj mrežnoj platformi, trebali bismo ga podržati posvuda. Ovo pojednostavljuje korištenje modula resursa jer inženjer mrežne automatizacije sada može konfigurirati resurs (kao što je LLDP) na svim mrežnim operativnim sustavima s izvornim i podržanim modulima.

2) Moduli resursa sada uključuju vrijednost stanja.

  • merged: konfiguracija se spaja s dostavljenom konfiguracijom (zadano);
  • replaced: Konfiguracija resursa bit će zamijenjena dostavljenom konfiguracijom;
  • overridden: Konfiguracija resursa bit će zamijenjena dostavljenom konfiguracijom; nepotrebne instance resursa bit će izbrisane;
  • deleted: Konfiguracija resursa bit će izbrisana/vraćena na zadane vrijednosti.

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

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

  • 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 testni način rada), rezultirajuća konfiguracija bit će vraćena kao strukturirani podaci;
  • commands: sve konfiguracijske naredbe koje se pokreću na uređaju da bi ga dovele u željeno stanje.

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

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

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

Ovaj post pokriva mnogo složenih koncepata, ali se nadamo da ćete na kraju imati bolje razumijevanje onoga što poslovni klijenti zapravo traže u prikupljanju, normalizaciji podataka i konfiguraciji petlje za platformu za automatizaciju. Ali zašto su im potrebna ova poboljšanja? Mnoge organizacije sada provode digitalnu transformaciju 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 predložaka ne rješava problem silosa i samo do određene mjere povećava učinkovitost. Red Hat Ansible Automation Platform pruža rigorozne i normativne modele podataka o resursima za programsko upravljanje temeljnim podacima na mrežnom uređaju. To jest, korisnici postupno napuštaju individualne metode konfiguracije u korist modernijih metoda s naglaskom na tehnologije (na primjer, IP adrese, VLAN, LLDP itd.), a ne na implementaciju određenog dobavljača.

Znači li to da su dani pouzdanih i provjerenih 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 naredbeni i konfiguracijski moduli i dalje biti potrebni mrežnim inženjerima za određene implementacije. Svrha modula resursa je pojednostaviti velike Jinja predloške i normalizirati nestrukturirane konfiguracije uređaja u strukturirani JSON format. S modulima resursa, postojećim će mrežama biti lakše transformirati svoju konfiguraciju u strukturirane parove ključ-vrijednost koji predstavljaju izvor istine koji se lako čita. Korištenjem strukturiranih parova ključ-vrijednost, možete prijeći s 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 dolaze u Ansible Engine 2.9?

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

Identificirali smo 7 kategorija i svakoj dodijelili specifične mrežne resurse:

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

Napomena: Resursi podebljani su planirani i implementirani u Ansible 2.9.
Na temelju povratnih informacija poslovnih korisnika i zajednice, bilo je logično prvo se pozabaviti onim modulima koji se odnose na protokole mrežne topologije, virtualizaciju i sučelja.
Sljedeće module resursa razvio je Ansible Network tim i odgovaraju platformama koje podržava Red Hat:

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

Ansible zajednica razvila je sljedeće module:

  • exos_lldp_global - iz Extreme Networksa.
  • nxos_bfd_interfaces - iz Cisca
  • nxos_telemetry - iz Cisca

Kao što vidite, koncept modula resursa uklapa se u našu strategiju usmjerenu na platformu. Odnosno, uključujemo potrebne mogućnosti i funkcije u sam Ansible za podršku standardizaciji u razvoju mrežnih modula, kao i za pojednostavljenje rada korisnika na razini Ansible uloga i playbook-a. Kako bi proširio razvoj modula resursa, tim Ansible izdao je alat Module Builder.

Planovi za Ansible 2.10 i kasnije

Nakon što Ansible 2.9 bude objavljen, radit ćemo na sljedećem skupu modula resursa za Ansible 2.10, koji se mogu koristiti za daljnju konfiguraciju mrežne topologije i pravila, npr. ACL, OSPF i BGP. Plan razvoja još se može korigirati, pa ako imate primjedbi, molimo da ih prijavite Ansible mrežna zajednica.

Resursi i početak

Priopćenje za javnost o platformi za automatizaciju Ansible
Ansible Automation Platform Blog
Budućnost isporuke sadržaja u Ansibleu
Razmišljanja o promjeni strukture projekta Ansible

Izvor: www.habr.com

Dodajte komentar