J'utilise FUNC pour effectuer des commandes parallèles sur nos serveurs.
L'autre jour, nous avons eu un problème lorsqu'un service redémarrage de puppet
via func
a fait toutes nos sévères frapper notre puppetmaster
en même temps.
Ma question: Comment puis-je exécuter la même commande exacte sur un ensemble de serveurs tout en ajoutant un délai avant qu'il soit exécuté sur les serveurs individuels?
Par exemple.: random_delay && service puppet restart
Je suis intéressé par le random_delay
une partie de la commande.
sleep $((RANDOM % MAXWAIT))
Où Maxwait est le retard maximum souhaité en secondes.
J'aime beaucoup l'innovation S19N, mais moins que la solution idéale. Je dis seulement que c'est moins qu'idéal, car il est encore largement non déterministe lorsque des choses se produiront réellement. Je préférerais beaucoup être capable de garantir quand des choses vont se passer et ce qui se produira quand il le fera.
L'orchestration de la marionnettes est en fait un problème dur .
[.____] L'une des solutions "les meilleures pratiques" est d'utiliser MCollective qui vous permettra non seulement de configurer lorsque la marionnette s'exécute sur votre groupe de machines, mais vous pouvez également l'utiliser pour d'autres problèmes d'orchestration similaires.
0 */12 * * * root Perl -e 'sleep int(Rand(43200))' && service puppet restart
Cela dormira une quantité aléatoire entre 0 seconde et 12 heures (43200 = 12 x 60 x 60) toutes les 12 heures