
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Ă„ och utforska utvecklingsplanen för pĂ„ wikisidan för .
Som vi nyligen meddelade, 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, .
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 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 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: TrueDu 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:
- interfacesSpelbok Ä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: Ethernet1Observera 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.changedSom 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.

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.


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:

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:

Följande moduler har utvecklats av Ansible-communityn:
exos_lldp_globalâ frĂ„n Extreme Networks.nxos_bfd_interfacesâ frĂ„n Cisconxos_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 Utvecklingsplanen kan fortfarande justeras, sÄ om du har nÄgra kommentarer, vÀnligen meddela det i .
Resurser och kom igÄng
KĂ€lla: habr.com
