U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

A prossima liberazione di Red Hat Ansible Engine 2.9 porta miglioramenti eccitanti, alcuni di quali sò discututi in questu articulu. Cum'è sempre, avemu sviluppatu megliurenze Ansible Network apertamente, cù u sustegnu di a cumunità. Unisciti à noi - fate un ochju board di emissione in GitHub è studià u pianu di sviluppu per liberazione di Red Hat Ansible Engine 2.9 nantu à a pagina wiki per Rete Ansible.

Cum'è avemu annunziatu recentemente, Piattaforma di Automazione Ansible Red Hat avà include Ansible Tower, Ansible Engine è tuttu u cuntenutu Ansible Network. Oghje, e piattaforme di rete più populari sò implementate attraversu i moduli Ansible. Per esempiu:

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

Per una lista cumpleta di e piattaforme chì sò cumpletamente supportate da Red Hat attraversu l'abbonamentu Ansible Automation, publicatu quì.

Chì avemu amparatu

In l'ultimi quattru anni, avemu amparatu assai nantu à u sviluppu di una piattaforma di automatizazione di rete. Avemu ancu amparatu chì quantu L'artefatti di a piattaforma sò usati in i libri di ghjocu Ansible è roli da l'utilizatori finali. È eccu ciò chì avemu scupertu:

  • L'urganisazioni automatizanu i dispositi micca solu da unu, ma da parechji venditori.
  • L'automatizazione ùn hè micca solu un fenomenu tecnicu, ma ancu culturale.
  • L'automatizazione di e rete à scala hè più difficiule di ciò chì pare per via di i principii architettonici fundamentali di u disignu di l'automatizazione.

Quandu avemu discututu i nostri piani di crescita à longu andà più di un annu fà, i nostri clienti corporativi anu dumandatu i seguenti:

  • A raccolta di fatti deve esse megliu standardizata è allinata cù i flussi di travagliu di l'automatizazione in tutti i dispositi.
  • L'aghjurnà di e cunfigurazioni nantu à u dispusitivu deve ancu esse standardizata è coherente per chì i moduli Ansible manighjanu a seconda mità di u ciculu dopu a cullizzioni di fatti.
  • Avemu bisognu di metudi rigorosi è supportati per cunvertisce a cunfigurazione di u dispositivu in dati strutturati. Nantu à sta basa, a surgente di a verità pò esse spustatu da u dispusitivu reta.

Migliure di i fatti

A cullizzioni di fatti da i dispositi di rete chì utilizanu Ansible spessu accade in casu. I plataformi basati in u web anu varii gradi di capacità di raccolta di fatti, ma anu poca o nimu funziunalità per analizà è standardizà a rapprisintazioni di dati in coppie chjave-valore. Leghjite post Ken Celenza nantu à quantu difficiuli è doloroso pò esse per analizà è standardizà e dati fattuali.

Puderete avè nutatu chì avemu travagliatu annantu à u rolu Ansible Network Engine. Naturalmente, 24K scaricate dopu, u rolu di Network Engine hè diventatu rapidamente unu di i roli Ansible più famosi in Ansible Galaxy per scenarii d'automatizazione di rete. Prima di trasfurmà assai di questu in Ansible 2.8 per preparà per ciò chì seria necessariu in Ansible 2.9, stu rolu Ansible hà furnitu u primu settore di strumenti per aiutà à analizà i cumandamenti, gestisce i cumandamenti è raccoglie dati per i dispositi di rete.

Se sapete cumu utilizà Network Engine, questu hè un modu assai efficau per cullà, analizà è standardizà e dati di fatti per l'usu in Ansible. U svantaghju di stu rolu hè chì avete bisognu di creà un saccu di parsers per ogni piattaforma è per tutte l'attività di a rete. Per capisce quantu hè difficiule di creà, spedite è mantene parsers, fate un ochju Più di 1200 parsers da i ragazzi di Cisco.

In poche parole, ottene fatti da i dispositi è nurmalizà in coppie chjave-valore hè essenziale per l'automatizazione à scala, ma ottene questu hè difficiule quandu avete parechji venditori è piattaforme di rete.

Ogni modulu di fattu di rete in Ansible 2.9 pò avà analizà a cunfigurazione di un dispositivu di rete è rinvià dati strutturati - senza biblioteche supplementari, roli Ansible o parsers persunalizati.

Da Ansible 2.9, ogni volta chì un modulu di rete aghjurnatu hè liberatu, u modulu di fattu hè migliuratu per furnisce dati nantu à sta sezione di a cunfigurazione. Vale à dì, u sviluppu di fatti è moduli avà accade à u listessu ritmu, è anu sempre una struttura di dati cumuni.

A cunfigurazione di e risorse nantu à un dispositivu di rete pò esse recuperata è cunvertita in dati strutturati in dui maneri. In i dui modi, pudete cullà è trasfurmà una lista specifica di risorse utilizendu una nova keyword gather_network_resources. I nomi di risorse currispondenu à i nomi di moduli, chì hè assai cunvenutu.

Mentre raccoglie i fatti:

Utilizà una keyword gather_facts pudete ritruvà a cunfigurazione attuale di u dispositivu à u principiu di u playbook, è dopu aduprà in tuttu u playbook. Specificate e risorse individuali per esse recuperate da u dispusitivu.

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

Puderete avè nutatu qualcosa di novu in questi esempi, à dì - gather_facts: true hè avà dispunibule per a cullezzione di fatti nativi per i dispositi di rete.

Utilizendu u modulu di fattu di rete direttamente:

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

U playbook torna i seguenti fatti nantu à l'interfaccia:

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

Avvisate cumu Ansible recupera a cunfigurazione nativa da u dispositivu Arista è a trasforma in dati strutturati per aduprà cum'è coppie di chjave-valore standard per i travaglii è l'operazioni downstream.

I fatti di l'interfaccia ponu esse aghjuntu à e variabili almacenati Ansible è utilizati immediatamente o dopu cum'è input à un modulu di risorse eos_interfaces senza trasfurmazioni supplementari o cunversione.

Moduli di risorse

Allora, avemu estratti i fatti, nurmalizatu i dati, mette in un diagramma di struttura di dati internu standardizatu è avè una fonte pronta di verità. Eura! Questu hè grande, sicuru, ma avemu sempre bisognu di cunvertisce in qualchì modu i coppie chjave-valore torna à a cunfigurazione specifica chì a piattaforma specifica di u dispositivu aspetta. Avemu avà bisognu di moduli specifichi di a piattaforma per risponde à questi novi requisiti di raccolta di fatti è normalizazione.

Chì ghjè un modulu di risorse? Pudete pensà à e sezzioni di cunfigurazione di un dispositivu cum'è risorse furnite da quellu dispusitivu. I moduli di risorse di a rete sò intenzionalmente limitati à una sola risorsa è ponu esse impilati cum'è blocchi di custruzzione per cunfigurà servizii di rete cumplessi. In u risultatu, i requisiti è a specificazione per un modulu di risorsa sò naturalmente simplificati, postu chì u modulu di risorsa pò leghje и cunfigurà un serviziu di rete specificu in un dispositivu di rete.

Per spiegà ciò chì face un modulu di risorsa, fighjemu un esempiu di playbook chì mostra una operazione idempodent utilizendu novi fatti di risorse di rete è moduli 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

Comu pudete vede, i dati raccolti da u dispusitivu sò trasferiti direttamente à u modulu di risorsa currispondente senza cunversione. Quandu u lanciatu, u playbook recupera i valori da u dispusitivu è li compara cù i valori previsti. In questu esempiu, i valori restituiti sò cum'è previstu (vale à dì, verificate per e deviazioni di cunfigurazione) è informa se a cunfigurazione hè cambiata.

U modu ideale per detectà a deriva di cunfigurazione hè di almacenà i fatti in Ansible variabili almacenati è l'utilizanu periodicamente cù u modulu di risorse in modu di ispezione. Questu hè un metudu simplice per vede s'ellu qualchissia hà cambiatu manualmente i valori. In a maiò parte di i casi, l'urganisazione permettenu i cambiamenti è a cunfigurazione manualmente, ancu s'è parechje operazioni sò realizate attraversu Ansible Automation.

Cumu i novi moduli di risorse differenu da i precedenti?

Per un ingegnere d'automatizazione di a rete, ci sò 3 differenzi principali trà i moduli di risorse in Ansible 2.9 è versioni precedenti.

1) Per una risorsa di rete data (chì pò ancu esse pensata cum'è una sezione di cunfigurazione), i moduli è i fatti evoluzione in tutti i sistemi operativi di rete supportati simultaneamente. Pensemu chì se Ansible supporta a cunfigurazione di risorse in una piattaforma di rete, duvemu sustene in ogni locu. Questu simplifica l'usu di i moduli di risorse perchè un ingegnere di l'automatizazione di a rete pò avà cunfigurà una risorsa (cum'è LLDP) in tutti i sistemi operativi di rete cù moduli nativi è supportati.

2) I moduli di risorse includenu avà un valore di statu.

  • merged: a cunfigurazione hè fusionata cù a cunfigurazione furnita (default);
  • replaced: A cunfigurazione di risorsa serà rimpiazzata cù a cunfigurazione furnita;
  • overridden: A cunfigurazione di risorsa serà rimpiazzata cù a cunfigurazione furnita; istanze di risorse innecessarii seranu sguassate;
  • deleted: A cunfigurazione di risorsa serà sguassata / restaurata à u default.

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

3) I moduli di risorse includenu avà valori di ritornu stabili. Quandu u modulu di risorsa di a rete hà fattu (o prupostu) i cambiamenti necessarii à u dispositivu di a rete, torna i stessi coppie chjave-valore à u playbook.

  • before: cunfigurazione nantu à u dispusitivu in forma di dati strutturati prima di u compitu;
  • after: se u dispusitivu hà cambiatu (o pò cambià se u modu di prova hè utilizatu), a cunfigurazione risultante serà restituita cum'è dati strutturati;
  • commands: Qualchese cumandamenti di cunfigurazione eseguite nantu à u dispusitivu per portà in u statu desideratu.

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

Chì significa tuttu questu? Perchè hè impurtante?

Questu post copre assai cuncetti cumplessi, ma speremu chì, à a fine, avarete una megliu comprensione di ciò chì i clienti di l'impresa dumandanu in fatti a cullizzioni, a normalizazione di dati è a cunfigurazione di loop per una piattaforma d'automatizazione. Ma perchè anu bisognu di sti migliuramentu? Parechje urganisazioni sò avà perseguite a trasfurmazioni digitale per rende i so ambienti IT più agili è cumpetitivi. Per u megliu o per u peghju, parechji ingegneri di rete diventanu sviluppatori di rete sia per interessu propiu sia per a gestione.

L'urganisazioni si capiscenu chì l'automatizazione di mudelli di rete individuali ùn risolve micca u prublema di silos è solu aumenta l'efficienza in una certa misura. A Red Hat Ansible Automation Platform furnisce mudelli di dati di risorsa rigurosu è normativu per gestisce in modu programmaticu e dati sottostanti in un dispositivu di rete. Vale à dì, l'utilizatori abbandunonu gradualmente i metudi di cunfigurazione individuali in favore di metudi più muderni cù un enfasi nantu à e tecnulugia (per esempiu, indirizzi IP, VLAN, LLDP, etc.), invece di una implementazione specifica di u venditore.

Questu significa chì i ghjorni di moduli di cumandamentu affidabili è pruvati è a cunfigurazione sò numerati? In nisun casu. I moduli di risorsa di rete previsti ùn saranu micca applicabili in tutti i casi o per ogni venditore, cusì i moduli di cumandamentu è di cunfigurazione seranu sempre necessarii da l'ingegneri di a rete per certe implementazioni. U scopu di i moduli di risorse hè di simplificà i grandi mudelli di Jinja è di nurmalizà e cunfigurazioni di u dispositivu non strutturatu in un formatu JSON strutturatu. Cù moduli di risorse, serà più faciule per e rete esistenti per trasfurmà a so cunfigurazione in coppie chjave-valore strutturate chì rapprisentanu una fonte di verità faciule da leghje. Utilizendu coppie chjave-valore strutturate, pudete passà da e cunfigurazioni in esecuzione in ogni dispositivu à travaglià cù dati strutturati indipendenti è portà e rete in prima linea di un approcciu infrastruttura-as-code.

Chì moduli di risorse venenu in Ansible Engine 2.9?

Prima di cuntà in dettagliu ciò chì succede in Ansible 2.9, ricurdemu cumu avemu divisu tuttu u scopu di u travagliu.

Avemu identificatu 7 categurie è assignate risorse di rete specifiche à ognunu:

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

Nota: E risorse in grassu sò state pianificate è implementate in Ansible 2.9.
Basatu nantu à i feedback da i clienti di l'impresa è a cumunità, era logicu per affruntà prima quelli moduli ligati à i protokolli di topologia di rete, a virtualizazione è l'interfaccia.
I seguenti moduli di risorse sò stati sviluppati da a squadra Ansible Network è currispondenu à e plataforme supportate da Red Hat:

U Playbook Inside. Funzioni di rete in u novu Ansible Engine 2.9

I seguenti moduli sò sviluppati da a cumunità Ansible:

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

Comu pudete vede, u cuncettu di moduli di risorse si mette in a nostra strategia centrata in a piattaforma. Vale à dì, includemu e capacità è e funzioni necessarii in Ansible stessu per sustene a standardizazione in u sviluppu di moduli di rete, è ancu per simplificà u travagliu di l'utilizatori à u livellu di roli Ansible è playbooks. Per espansione u sviluppu di i moduli di risorse, a squadra Ansible hà liberatu l'uttellu Module Builder.

Piani per Ansible 2.10 è oltre

Una volta chì Ansible 2.9 hè liberatu, avemu da travaglià nantu à u prossimu settore di moduli di risorse per Ansible 2.10, chì pò esse usatu per cunfigurà più a topologia di a rete è a pulitica, per esempiu. ACL, OSPF è BGP. U pianu di sviluppu pò ancu esse aghjustatu, dunque, se avete cumenti, fate un rapportu A cumunità Ansible Network.

Risorse è principià

Comunicatu di stampa nantu à Ansible Automation Platform
Ansible Automation Platform Blog
U futuru di a consegna di cuntenutu in Ansible
Riflessioni nantu à cambià a struttura di u prugettu Ansible

Source: www.habr.com

Add a comment