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
Kao što smo nedavno najavili,
- 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,
Š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
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
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.
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.
Š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:
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:
Ansible zajednica razvila je sljedeće module:
exos_lldp_global
- iz Extreme Networksa.nxos_bfd_interfaces
- iz Ciscanxos_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.
Resursi i početak
Izvor: www.habr.com