Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

I den kommande utgĂ„van av Red Hat Ansible Engine 2.9 förvĂ€ntar vi oss imponerande förbĂ€ttringar, varav nĂ„gra beskrivs i denna artikel. Som vanligt har vi utvecklat förbĂ€ttringarna av Ansible Network öppet, med stöd frĂ„n gemenskapen. GĂ„ med oss – ta en titt pĂ„ issuesidan pĂ„ GitHub och utforska utvecklingsplanen för slĂ€ppet av Red Hat Ansible Engine 2.9 pĂ„ wikisidan för Ansible Network.

Som vi nyligen meddelade, Red Hat Ansible Automation Platform inkluderar nu Ansible Tower, Ansible Engine och allt innehÄll frÄn Ansible Network. Just nu implementeras de flesta populÀra nÀtverksplattformar genom Ansible-moduler. Till exempel:

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

En fullstÀndig lista över plattformar som fullt stödjs av Red Hat genom Ansible Automation-prenumeration, publiceras hÀr.

Vad vi har lÀrt oss

Under de senaste fyra Ären har vi lÀrt oss mycket om att utveckla en plattform för nÀtverksautomatisering. Vi har ocksÄ lÀrt oss att som artefakterna frÄn plattformen tillÀmpas i playbooks och roller inom Ansible ur slutanvÀndarnas perspektiv. Och hÀr Àr vad vi har kommit fram till:

  • Organisationer automatiserar inte bara en, utan mĂ„nga leverantörers enheter.
  • Automatisering Ă€r inte bara ett tekniskt fenomen, utan ocksĂ„ en kulturell sĂ„dan.
  • Storskalig automatisering av nĂ€tverk Ă€r mer komplex Ă€n det verkar, pĂ„ grund av grundlĂ€ggande arkitektoniska designprinciper för automatisering.

NÀr vi diskuterade vÄra lÄngsiktiga utvecklingsplaner för mer Àn ett Är sedan, bad vÄra företagskunder om följande:

  • Faktainsamlingen mĂ„ste standardiseras bĂ€ttre och anpassas till automatiseringsarbetsflödet för alla enheter.
  • Uppdatering av konfigurationer pĂ„ enheten behöver ocksĂ„ standardiseras och anpassas sĂ„ att Ansible-moduler kan hantera den andra halvan av cykeln efter faktainsamlingen.
  • Det behövs strikta och stödjande metoder för att konvertera enhetskonfigurationer till strukturerade data. PĂ„ den grunden kan kĂ€llan till sanningen flyttas frĂ„n nĂ€tverksenheten.

FörbÀttringar av faktainsamling

Faktainsamling frĂ„n nĂ€tverksenheter med hjĂ€lp av Ansible sker ofta pĂ„ mĂ„fĂ„. NĂ€tverksplattformar Ă€r i olika grad utrustade med funktioner för faktainsamling, men de har nĂ€stan inga – eller inga alls – funktioner för att analysera och standardisera representationen av data i nyckel-vĂ€rde-par. LĂ€s mer inlĂ€gg Ken Celenza om hur utmanande och plĂ„gsamt det kan vara att analysera och standardisera faktadata.

Du kanske har mÀrkt hur vi har arbetat med rollen Ansible Network Engine. Efter 24 000 nedladdningar har Network Engine-rollen snabbt blivit en av de mest populÀra rollerna i Ansible Galaxy för automatiseringsskript för nÀtverket. Innan vi flyttade mycket av detta till Ansible 2.8 för att förbereda oss för vad som krÀvs i Ansible 2.9, gav denna Ansible-roll det första verktyget för att hjÀlpa till med parsning av kommandon, hantering av kommandon och insamling av data för nÀtverksutrustning.

Om du Àr bekant med anvÀndningen av Network Engine Àr det ett mycket effektivt sÀtt att samla, parsa och standardisera faktadata för anvÀndning i Ansible. Nackdelen med denna roll Àr att det krÀvs en mÀngd parser för varje plattform och för all nÀtverksaktivitet. För att förstÄ hur utmanande det Àr att skapa, leverera och underhÄlla parsers, kolla in över 1200 parsers frÄn grabbarna pÄ Cisco.

Kort sagt, för storskalig automatisering Àr det avgörande att hÀmta fakta frÄn enheter och normalisera dem till nyckel-vÀrde-par, men det Àr svÄrt nÀr du har mÄnga leverantörer och nÀtverksplattformar.

Varje faktormodul för nÀtverk i Ansible 2.9 kan nu analysera konfigurationen av nÀtverksutrustningen och Äterge strukturerade data - utan extra bibliotek, Ansible-roller eller anpassade parsers.

FrÄn och med Ansible 2.9 förbÀttras faktormodulen med varje utgivning av den uppdaterade nÀtverksmodulen för att tillhandahÄlla data om den hÀr delen av konfigurationen. Det betyder att utvecklingen av fakta och moduler nu sker i takt med varandra, och de kommer alltid att ha en gemensam datastruktur.

Konfigurationen av resurser pÄ nÀtverksutrustningen kan extraheras och omvandlas till strukturerade data pÄ tvÄ sÀtt. BÄda sÀtten gör det möjligt att samla och omvandla en specifik lista av resurser med den nya nyckelordet gather_network_resources. Resursnamnen motsvarar modulernas namn, vilket Àr mycket praktiskt.

Under faktainsamlingsprocessen:

Med hjÀlp av nyckelordet gather_facts kan den aktuella konfigurationen av enheten extraheras i början av playbooken och sedan anvÀndas genom hela playbooken. Ange specifika resurser som ska extraheras frÄn enheten.

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

Du kanske har lagt mĂ€rke till nĂ„got nytt i dessa exempel, nĂ€mligen — gather_facts: true nu tillgĂ€ngliga för att samla in fakta nativt för nĂ€tverksenheter.

AnvÀnda modulen för nÀtverksfakta direkt:

- name: samla in grÀnssnittsconfigurationsfakta
  eos_facts:
    gather_subset: min
    gather_network_resources:
    - interfaces

Spelbok Äterger följande fakta om grÀnssnittet:

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

Observera hur Ansible hÀmtar den nativa konfigurationen frÄn Arista-enheten och omvandlar den till strukturerade data för att anvÀnda som standardnyckel-vÀrde-par för efterföljande uppgifter och operationer.

GrÀnssnittsdata kan lÀggas till i Ansible:s lagrade variabler och anvÀndas direkt eller senare som indata för modulen resurs eos_interfaces utan ytterligare bearbetning eller omvandling.

Resursmoduler

SÄ, vi har extraherat fakta, normaliserat data, skrivit dem i en standardiserad intern datamodell och fÄtt en klar kÀlla till sanning. Hurra! Det Àr naturligtvis fantastiskt, men vi behöver fortfarande pÄ nÄgot sÀtt omvandla nyckel-vÀrde-paren tillbaka till den specifika konfiguration som en viss enhetsplattform förvÀntar sig. Nu behöver vi moduler för specifika plattformar för att möta dessa nya krav pÄ faktainsamling och normalisering.

Vad Àr en resursmodul? Konfigurationsavsnitt för en enhet kan ses som resurser som tillhandahÄlls av den hÀr enheten. NÀtverksresursmoduler Àr avsiktligt begrÀnsade till en resurs och kan staplas som byggstenar för att konfigurera komplexa nÀtverkstjÀnster. Som ett resultat förenklas kraven och specifikationen för en resursmodul naturligt, eftersom resursmodulen kan lÀsa och konfigurera en specifik nÀtverkstjÀnst pÄ nÀtverksenheten.

För att förklara vad en resursmodul gör, lÄt oss se pÄ ett exempelspelbok som visar en identisk operation med hjÀlp av de nya fakta om nÀtverksresurs och modulen eos_l3_interface.

- namn: exempel pÄ fakta som skickas tillbaka till enheten.
  hosts: arista
  gather_facts: false
  tasks:
  - namn: hÀmta arista eos-fakta
    eos_facts:
      gather_subset: min
      gather_network_resources: l3_interfaces

  - namn: sÀkerstÀlla att IP-adressinformationen Àr korrekt
    eos_l3_interfaces:
      config: "{{ ansible_network_resources['l3_interfaces'] }}"
      register: result

  - namn: sÀkerstÀlla att konfigurationen inte har Àndrats
    assert:
      that: not result.changed

Som ni ser har data som samlats in frÄn enheten överförts direkt till den relevanta resursmodulen utan omvandling. NÀr playbook körs hÀmtar den vÀrden frÄn enheten och jÀmför dem med förvÀntade. I det hÀr exemplet motsvarar de extraherade vÀrdena de förvÀntade (det vill sÀga en konfigurationsavvikelse kontrolleras) och ett meddelande ges om huruvida konfigurationen har Àndrats.

Det perfekta sÀttet att upptÀcka konfigurationsavvikelser Àr att spara fakta i lagrade Ansible-variabler och regelbundet anvÀnda dem tillsammans med resursmodulen i kontrollÀge. Detta Àr en enkel metod för att se om nÄgon har Àndrat vÀrden manuellt. I de flesta fall tillÄter organisationer handÀndringar och konfiguration, Àven om mÄnga operationer utförs genom Ansible Automation.

Vad skiljer de nya resursmodulerna frÄn tidigare?

Det finns 3 huvudsakliga skillnader för en nÀtverksautomationstekniker mellan resursmodulerna i Ansible 2.9 och tidigare versioner.

1) För en specifik nÀtverksresurs (som ocksÄ kan ses som ett konfigurationsavsnitt) kommer moduler och fakta att utvecklas i alla stödda nÀtverksoperativsystem samtidigt. Vi anser att om Ansible stöder resurskonfigurationen pÄ en nÀtverksplattform sÄ bör vi stödja det överallt. Detta förenklar anvÀndningen av resursmodulerna, eftersom nÀtverksautomationsteknikern nu kan konfigurera resursen (till exempel LLDP) i alla nÀtverksoperativsystem med inbyggda och stödda moduler.

2) Resursmoduler inkluderar nu vÀrdet av tillstÄnd.

  • sammanfogad: konfigurationen Ă€r sammanfogad med den tillhandahĂ„llna konfigurationen (som standard);
  • ersatt: resurskonfigurationen kommer att ersĂ€ttas med den tillhandahĂ„llna konfigurationen;
  • överskriden: resurskonfigurationen kommer att ersĂ€ttas med den tillhandahĂ„llna konfigurationen; överflödiga resursinstanser kommer att tas bort;
  • borttagen: resurskonfigurationen kommer att tas bort / Ă„terstĂ€llas som standard.

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

3) Resursmoduler inkluderar nu stabila ÄterlÀmnade vÀrden. NÀr nÀtverksresursmodulen gör (eller föreslÄr) nödvÀndiga Àndringar i nÀtverksenheten returneras samma nyckel-vÀrde-par till playbooken.

  • before: konfiguration pĂ„ enheten i form av strukturerade data fram till uppgiften;
  • efter: om enheten har Ă€ndrats (eller kan förĂ€ndras om kontrolllĂ€ge anvĂ€nds), kommer den resulterande konfigurationen att returneras i form av strukturerade data;
  • kommandon: alla konfigurationskommandon som körs pĂ„ enheten för att fĂ„ den i önskat tillstĂ„nd.

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

Vad betyder allt detta? Varför Àr det viktigt?

I detta inlĂ€gg beskrivs mĂ„nga komplexa koncept, men vi hoppas att du tillslut kommer att bĂ€ttre förstĂ„ vad företagskunder efterfrĂ„gar i termer av faktainsamling, datanormalisering och konfigurationscykler för automatiseringsplattformar. Men varför behöver de dessa förbĂ€ttringar? Just nu genomgĂ„r mĂ„nga organisationer en digital transformation för att göra sina IT-miljöer mer flexibla och konkurrenskraftiga. Oavsett om det Ă€r bra eller dĂ„ligt, sĂ„ blir mĂ„nga nĂ€tverksingenjörer nĂ€tverksutvecklare — antingen av eget intresse eller pĂ„ direktiv frĂ„n ledningen.

Organisationer inser att automatisering av enskilda nÀtverksmallar inte löser problemet med fragmentering och ökar effektiviteten endast upp till en viss grÀns. Red Hat Ansible Automation Platform tillhandahÄller strikta och normerande datamodeller för resurser för att programmatisk hantering av grunddata pÄ nÀtverksenheten. Det innebÀr att anvÀndare gradvis överger individuella konfigurationsmetoder till förmÄn för mer moderna metoder med fokus pÄ teknik (till exempel IP-adresser, VLAN, LLDP, etc.), snarare Àn specifika vendorimplementationer.

Betyder det att dagarna för pÄlitliga och beprövade moduler för kommandon och konfigurationer Àr rÀknade? Absolut inte. De förvÀntade modulerna för nÀtverksresurser kommer inte att tillÀmpas i alla fall och inte för varje leverantör, sÄ moduler för kommandon och konfigurationer kommer fortfarande att behövas av nÀtverksingenjörer för specifika implementationer. Syftet med resurserna Àr att förenkla stora Jinja-mallar och normalisera ostrukturerade enhetskonfigurationer i ett strukturerat JSON-format. Med resurserna kommer existerande nÀtverk att lÀttare kunna omvandla sin konfiguration till strukturerade nyckel-vÀrde-par, som kommer att utgöra en lÀsbar kÀlla till sanning. Genom att anvÀnda strukturerade nyckel-vÀrde-par kan man gÄ frÄn att köra konfigurationer pÄ varje enhet till att arbeta med oberoende strukturerade data och sÀtta nÀtverken i fokus med en "infrastruktur som kod"-ansats.

Vilka resurser kommer att finnas i Ansible Engine 2.9?

Innan vi gÄr in pÄ detaljer om vad som kommer att ingÄ i Ansible 2.9, lÄt oss pÄminna oss om hur vi har delat upp hela arbetsomfÄnget.

Vi har identifierat 7 kategorier och tilldelat specifika nÀtverksresurser till var och en:

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

Obs: Ressourcer markerade med fet stil var planerade och implementerade i Ansible 2.9.
Baserat pÄ feedback frÄn företagskunder och communityn var det logiskt att först fokusera pÄ de moduler som relaterar till nÀtverkstopologi, virtualisering och grÀnssnitt.
Följande resurser har utvecklats av Ansible Network-teamet och motsvarar de plattformar som stöds av Red Hat:

Inuti handboken. NĂ€tverksfunktioner i nya Ansible Engine 2.9

Följande moduler har utvecklats av Ansible-communityn:

  • exos_lldp_global — frĂ„n Extreme Networks.
  • nxos_bfd_interfaces — frĂ„n Cisco
  • nxos_telemetry — frĂ„n Cisco

Som ni ser passar konceptet med resurser in i vÄr plattformsorienterade strategi. Det innebÀr att vi inkluderar de nödvÀndiga funktionerna och egenskaperna i sjÀlva Ansible för att stödja standardisering vid utvecklingen av nÀtverksmoduler och ytterligare förenkla anvÀndarnas arbete pÄ nivÄerna roller och Ansible-spel. För att utöka utvecklingen av moduler har Ansible-teamet slÀppt verktyget Module Builder.

Planer för Ansible 2.10 och framÄt

Efter lanseringen av Ansible 2.9 kommer vi att ta oss an nÀsta uppsÀttning resurser för Ansible 2.10, som kommer att kunna anvÀndas för ytterligare anpassning av nÀtverkets topologi och policy, sÄsom ACL, OSPF och BGPUtvecklingsplanen kan fortfarande justeras, sÄ om du har nÄgra kommentarer, vÀnligen meddela det i Ansible Network-gemenskapen.

Resurser och kom igÄng

Pressmeddelande om Ansible Automation Platform
Ansible Automation Platform-blogg
Framtiden för innehÄllsleverans i Ansible
Reflektioner kring förÀndringar i Ansible-projektets struktur

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster