Beheer meerdere systemen met Func
Gepubliceerd: Maandag 4 januari 2010
Auteur: Koen Vervloesem
Wil je dezelfde taak op meerdere computers uitvoeren, dan kun je één voor één op die computers inloggen, de taak uitvoeren en dan op de volgende computer in de rij hetzelfde doen. Slimmer is natuurlijk om dat te scripten. Red Hat biedt een tool die hierbij kan helpen: Func.
Func staat voor Fedora Unified Network Controller. Het is geschreven in Python en biedt een API aan zodat je het gemakkelijk kunt gebruiken in Python-scripts. Maar Func is ook gewoon vanaf de commandline aan te roepen. De architectuur is typisch client-server: de computers die je wilt besturen (in de Func-documentatie 'minions' genoemd) draaien de daemon funcd, die de computer contacteren waarmee je alles bestuurt (in de Func-documentatie 'overlord' genoemd). Vanaf de overlord kun je dan opdrachten sturen naar individuele minions, een deelverzameling of alle minions.
Aan de slag
Op de overlord installeren we Func eenvoudig, als het om een Fedora-machine gaat:
# yum install func
Op Red Hat Enterprise Linux en CentOS moet je eerst nog de repository Extras Packages For Enterprise Linux toevoegen. Instructies hiervoor zijn te vinden op de wiki van Func.
Het netwerkverkeer tussen de overlord en de minions wordt uiteraard versleuteld. Voor het beheren van de sleutels gebruikt Func het pakket Certmaster, dat tools en een Python API voor SSL-certificaten aanbiedt. De minions genereren certificate signing requests (CSR's) met een publieke sleutel en zenden die naar de Certmaster op de overlord. De beheerder kan deze certificaten dan tekenen. Nadat de minions de ondertekende certificaten ontvangen hebben, kan de communicatie tussen minions en overlord versleuteld gebeuren.
Daarom schakelen we op de overlord eerst de Certmaster-service in:
# chkconfig --level 345 certmaster on
# service certmaster start
Op de minions installeren we eveneens het Func-pakket. Specificeer dan op elke minion in het configuratiebestand /etc/certmaster/minion.conf van welke Certmaster-host we het certificaat willen ontvangen:
[main]
certmaster = master.example.org
certmaster_port = 51235
log_level = DEBUG
cert_dir = /etc/pki/certmaster
Daarna schakelen we op elke minion de funcd-service in:
# chkconfig --level 345 funcd on
# service funcd start
Hebben we alle minions zo klaargemaakt, dan gaan we terug naar de overlord en kijken we welke minions zich hebben aangeboden:
# certmaster-ca --list
En dan ondertekenen we één voor één de certificaten van de minions:
# certmaster-ca --sign hostname
Wanneer je de Func-commando's niet altijd als root wilt uitvoeren, kun je er met een aantal ACL-commando's ook voor zorgen dat een normale account toegang krijgt. Het is mogelijk om op de minions in te stellen welke commando's de overlord mag uitvoeren.
De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.
