SaltStack gebruiken om remote commando’s uit te laten voeren.

Bij mijn huidige opdracht kwam de behoefte naar boven om ad hoc wijzigingen, controles en updates door te voeren, op zowel alle Linux als Windows servers. Dit zou ingericht kunnen worden door gebruik te maken van scripts of eenmalige Puppet modules. Maar deze scripts of modules moeten elke keer aangepast worden voor een specifieke taak of functie. Daar komt bij, dat voor simpele dingen, voornamelijk one-offs, het erg gemakkelijk zou zijn om een tool te hebben waarbij je de commando’s opgeeft en de resultaten meteen op het scherm te zien zijn.

Hier zijn meerdere tools voor beschikbaar, echter hebben wij hiervoor gekeken naar

SaltStack. Deze automation tool heeft een ongekend aantal mogelijkheden, waaronder
remote execution van commando’s. Hier wil ik in deze blog verder op ingaan.

Voor een werkende omgeving is het volgende nodig:

SaltStack server; daarnaast dient er op iedere client een Salt Minion te draaien (uiteraard deployen we de Minion via Puppet). Nadat de Minion op de nodes is gedeployed, stuurt deze zijn key naar de master. Deze kunnen per node of allemaal tegelijk geaccepteerd worden met: salt-key –a en dan de node naam of salt-key –A voor alle nodes.

Nu hebben we de mogelijkheid om, op zowel enkele specifieke servers, als wel op complete omgevingen commando’s af te vuren. Dit gaat via de Salt Master door de volgende commando’s te gebruiken: salt ‘node naam’ cmd.run ‘commando dat je wilt uitvoeren.

Als er dan op vrijdagmiddag een Storagebeheerder langs komt met het verzoek om tijdelijk op alle Oracle servers een mount punt te wijzigen, dan is dit zo geregeld.

Via Salt de fstab aanpassen en de oude entry verwijderen:

salt ‘??LODB*’ cmd.run ‘sed -i “/\b\(ora05\)\b/d” /etc/fstab’

Hier is ook te zien hoe een duidelijke/leesbare naamgeving helpt bij Salt.

Nieuwe fstab entry toevoegen

salt ‘T7LODB001*’ cmd.run ‘echo “10.38.34.11:/vaultcl1_svm_t7_t7lodb001_ora05 nfs   rw,hard,bg,intr,vers=3,proto=tcp,rsize=32768   0       0” >> /etc/fstab’

dan alleen nog even de nieuwe mount actief maken:

salt ‘??LODB*’ cmd.run ‘umount /data/ora05 && mount /data/ora05’

Ook voor ad hoc patching, zoals glibc stack-based buffer overflow, is via Salt snel uit te rollen op nodes: reposotorie toevoegen

salt ‘L6L*’ cmd.run ‘zypper ar –no-gpgcheck -n sa -t yum http://b0lrep001.ota.ind.minbzk.nl:/repos/Vmware/Sles11/3/patches patches’

Uitrollen patch

salt ‘L6L*’ cmd.run ‘zypper -n zypper update glibc*

Zoals ik in het begin al aangaf is dit maar één van de mogelijkheden die SaltStack biedt. Op de onderstaande links kun je een hoop informatie vinden over wat de mogelijkheden zijn en hoe deze te implementeren.

http://saltstack.com/

https://docs.saltstack.com/en/latest/topics/tutorials/index.html#introduction