Tools voor configuration management en orchestration

In de vorige notes bespraken we de mogelijkheden van NMS. Een alternatief voor zo’n NMS is het gebruik van configuration management en orchestration tools. In deze bijdrage gaan we in op deze tools.

Alternatief voor netwerkmanagementsysteem (NMS)

In een eerdere bijdrage van Quanza Engineering Notes bespraken we de mogelijkheden van netwerkmanagementsysteem (NMS) voor uw organisatie. Een alternatief voor zo’n NMS is het gebruik van configuration management- en orchestration-tools. Met behulp van eenvoudige templates en variabelen genereren deze programma’s systeemconfiguraties. Na syntactische foutcontrole wordt een gegenereerde configuratie handmatig of automatisch uitgerold naar de juiste apparatuur. Dit type software wordt van oorsprong veel gebruikt in cloud-omgevingen, om grote aantallen virtuele machines snel op te kunnen leveren en eenduidig te configureren. Een aantal van deze tools zijn uitstekend inzetbaar voor het beheer van netwerkapparatuur.

Puppet

Puppet is één van de oudste configuration management tools. De tool werkt met een centrale server waar configuraties gedefinieerd worden, plus een agent-applicatie die geïnstalleerd wordt op de te beheren netwerkapparatuur. De configuratie voor een apparaat wordt beschreven in een template. Deze template wordt vervolgens door de agent middels een ingebouwde module uitgevoerd op het te configureren apparaat.

Het volgende voorbeeld toont een template voor twee Juniper-switches met elk twee VLANs en een netwerkpoort:

 

node basenode {

netdev_vlan { “Extern”:

vlan_id => 11,

description => “Extern VLAN”,

}

netdev_vlan { “Intern”:

vlan_id => 12,

description => “Intern VLAN”,

}

}

 

node switch1 inherits basenode {

netdev_l2_interface { ‘ge-0/0/1’:

description => “Webserver 1”,

untagged_vlan => Extern,

}

}

node switch2 inherits basenode {

netdev_l2_interface { ‘ge-0/0/2’:

description => “Webserver 2”,

untagged_vlan => Extern,

}

}

Met behulp van Juniper’s netdev Puppet-module wordt deze template door Puppet omgezet naar configuratie op de Juniper-switches en automatisch geactiveerd. De beheerder hoeft dus niet langer zelf in te loggen op de individuele apparaten.

Puppet-modules voor configuratie van apparatuur

Puppet bevat modules voor configuratie van apparatuur van de meeste bekende netwerkleveranciers. Een groot nadeel van Puppet is echter dat voor deze tool een stuk software, de Puppet agent, geïnstalleerd moet worden op het netwerkapparaat zelf. Dit is niet op alle apparatuur mogelijk. Ook is programmeerkennis vereist om configuraties te genereren voor functionaliteit waar geen standaardmodule voor aanwezig is. Dit maakt de tool voor veel netwerkbeheerders lastig aan te passen of uit te breiden.

Ansible

De grootste concurrent van Puppet op dit moment is Ansible. Ansible heeft geen agent die op een netwerkapparaat geïnstalleerd moet worden. Configuraties worden direct op de apparatuur ingeladen via SSH. Aangezien vrijwel elk netwerkapparaat SSH ondersteunt is Ansible zeer breed inzetbaar.

Een ander voordeel van Ansible is de gebruikte template-taal; YAML in combinatie met JINJA2. YAML en JINJA2 zijn ook voor niet-programmeurs zeer eenvoudig te begrijpen, wat het gebruik van Ansible in de praktijk zeer laagdrempelig maakt. Een voorbeeld voor de eerder beschreven configuratie in YAML is:

 

# vlans.yml

 

vlans:

extern:

id: 11

description: “Extern VLAN”

intern:

id: 12

description: “Intern VLAN”

 

 

# switch1.yml

 

interfaces:

ge-0/0/1:

description: “Webserver 1”

untagged_vlan: extern

 

 

# switch2.yml

 

interfaces:

ge-0/0/2:

description: “Webserver 2”

untagged_vlan: extern

 

Met behulp van een JINJA2-template zet Ansible deze definitie om naar een configuratie die in een Juniper-router geladen kan worden:

interfaces {

{% for if in interfaces %}

{% if %} {

description {% if.description %}

native-vlan-id {% if.untagged_vlan %}

unit 0 {

family ethernet-switching {

vlan {

members {% if.untagged_vlan %}

}

}

}

{% endfor %}

}

 

vlans {

{% for vl in vlans %}

{% vl %} {

name {% vl.name %}

vlan-id {% vl.id %}

}

{% endfor %}

}

Omdat zowel de YAML-definitie als de JINJA2-template zelf geschreven moet worden is het maken van een netwerkconfiguratie meer werk dan met Puppet. Aan de andere kant is voor het maken van aanpassingen of toevoegen van nieuwe templates vrijwel geen programmeerkennis nodig. Een handige netwerkbeheerder kan dit dus prima zelf.

SaltStack

Een derde veelgebruikte tool is SaltStack. Salt maakt eveneens gebruik van YAML/JINJA2 voor het genereren van configuraties. Salt is complexer qua opzet dan Ansible en heeft daardoor een steilere leercurve. Wel is Salt sneller en efficiënter, wat deze tool geschikter maakt voor grootschalige netwerkomgevingen.

NAPALM

Een nadeel van alle bovenstaande tools is dat voor elk type apparatuur aparte configuraties gegenereerd moeten worden. NAPALM (Network Automation Programmability and Abstraction Layer with Multi-vendor support) is een open source project dat dit probleem probeert op te lossen.

NAPALM bevat een groot aantal voorgedefinieerde JINJA2-templates voor standaardconfiguraties van netwerkapparatuur. Daarnaast bevat de tool functionaliteit om informatie over de huidige status van een apparaat op te halen, zodat op basis hiervan dynamisch configuratie gegeneerd kan worden. Voor de communicatie met de netwerkapparatuur maakt NAPALM onder de motorkap gebruik van Ansible of Salt.

NAPALM komt vooral tot zijn recht in omgevingen waarin apparatuur van verschillende leveranciers aanwezig is. Omdat NAPALM een abstractielaag toevoegt is het mogelijk om al deze apparatuur met dezelfde YAML-definities te configureren. Het vervangen van een apparaat door dat van een ander merk is niet meer werk dan het aanpassen van het apparaattype en het genereren van een nieuwe configuratie.

Netwerkautomatisering: hoe en waar te beginnen?

Om te starten met netwerkautomatisering binnen uw organisatie is het niet nodig om programmeurs aan te nemen. Bovengenoemde tools maken het mogelijk om op een snelle en eenvoudige manier beheerstaken te automatiseren. Door automatisering kunnen veranderingen sneller uitgerold worden en wordt het aantal menselijke fouten gereduceerd.

Quanza heeft jarenlange ervaring met configuration management voor zowel kleine als grote netwerken. Wij kunnen u ondersteunen in het zetten van de eerste stappen in het automatiseren van uw netwerk, van advies over de te gebruiken tooling tot het opzetten van de omgeving en het schrijven of aanpassen van configuratie-templates.

Over de auteur: Martin Pels

Gespecialiseerd in BGP, CDN en netwerk automatisering. In zijn vrije tijd gaat een groot deel van zijn tijd naar zijn hobbyproject: NLNOG RING. Verder is hij fervent concertbezoeker en ’s zomers in het weekend in het Vondelpark te vinden als vrijwilliger bij het openluchttheater.

De rest van de Quanzanen ontmoeten? Bekijk ons smoelenboek.

Meer weten over SDN?

Download hier gratis het rapport dat Gartner in januari 2017 uitbracht over software-defined network architecturen. Het rapport bevat een pragmatische roadmap voor infrastructuur en operations managers om optimaal te profiteren van de voordelen van SDN.

[gravityform id=”24″ title=”false” description=”false”]