Archive for » February, 2009 «

Thursday, February 26th, 2009 | Author:

eth0Tips rapide : pour accélerer la collecte des données avec munin-update, ajoutez dans /etc/munin/munin.conf du master :

fork yes

Ainsi munin fera un fork par machine à aller interroger, plutôt que bêtement les unes après les autres.

Category: Général  | Tags: ,  | Leave a Comment
Wednesday, February 25th, 2009 | Author:

eth0Au boulot j’ai remplacé cacti par munin. Munin c’est choupi, la conf est en flat file mais ça a deux défauts, ou un selon le point de vue : le munin-cgi-graph est tout simplement moisi car d’une lenteur sans nom, et générer les images lors du poll c’est long. Sauf quand on tombe sur ce petit hack convivial qui permet de lancer en parallèle la génération pour X nodes. Malheureusement, l’exemple donné en lien n’est valable que pour la version du trunk (au moment ou j’écris ceci) et pas pour la version 1.2.6 livrée avec lenny. J’ai donc modifié mon munin-graph en “portant” le hack disponible. Résultat : 2min30s au lieu de 9min pour la génération de 80 machines (dont certaines avec beaucoup d’infos)

Le code en question :

# Add this to munin-graph
sub myforked_processnode {
        my ($domain, $code) = @_;
 
        my $max=24;
        my $counter = 0;
 
        for my $key ( keys %{$config->{domain}->{$domain}->{node}}) {
                wait unless ++ $counter >= $max;
                #print "Processing ".$key."\n";
                die "Fork failed: $!\n" unless defined (my $pid = fork);
                exit $code -> ($domain,$key,$config->{domain}->{$domain}->{node}->{$key}) unless $pid;
        }
        1 until -1 == wait;
}
 
# Modify process_domain to get :
sub process_domain {
    my ($domain) = @_;
    myforked_processnode($domain, \&process_node);
}

Et voila !

Category: BOFH Life, SysAdmin, Tech  | Tags: , , , , ,  | 3 Comments
Monday, February 16th, 2009 | Author:

J’ai eu à changer récemment des paramètres sur de nombreux switches cisco. Plutot que d’y  passer ma matinée, j’ai utilisé crisco et ça ne m’a pris que 30 minutes. Petite astuce : pour enchainer facilement des commandes mettez tout dans une seule variable / ligne et parsemez de “\n”, la lib aura moins de mal.

Friday, February 06th, 2009 | Author:

Au boulot je déploie des fichiers authorized_keys pour différents utilisateurs, basé sur un modèle “fixe” par utilisateur. C’est un fichier qui est utilisé comme source, rangé sous files/users/[username]/authorized_keys. Le soucis c’est quand un utilisateur veut sur une seule machine un authorized_keys différent du modèle. J’ai cherché dans tous les sens, de façon bien compliquée souvent, alors qu’il existe un moyen très simple de mettre en place une “exception” par machine. En effet, le type file autorise à spécifier plusieurs sources (un array de sources) et va “fallback” sur les différents fichiers en s’arrêtant sur le premier trouvé. Ce qui nous donne en langage puppet :

file { "/home/$title/.ssh/authorized_keys":
   owner => $title,
   group => "staff",
   mode => 600,
   source => [ "puppet://$fileserver/files/users/$title/authorized_keys.$fqdn", "puppet://$fileserver/files/users/$title/authorized_keys" ]
}

Ainsi, pour la machine client.mondomaine.com si le fichier files/users/[username]/authorized_keys.client.mondomaine.com existe, il sera utilisé en lieu et place de files/users/[username]/authorized_keys.