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
Kao što smo nedavno objavili,
- 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,
Š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
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
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.
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.
Š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:
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:
Ansible zajednica je razvila sljedeće module:
exos_lldp_global
- od Extreme Networks.nxos_bfd_interfaces
- od Cisconxos_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.
Resursi i početak
izvor: www.habr.com