J'utilise func pour exécuter des commandes parallèles sur nos serveurs.
L'autre jour, nous avons eu un problème lorsqu'un redémarrage du service de puppet
via a func
fait que tous nos serveurs se sont abattus sur nous 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 son exécution sur les serveurs individuels?
Par exemple: random_delay && service puppet restart
Je m'intéresse à la random_delay
partie de la commande.
linux
command-line-interface
puppet
Belmin Fernandez
la source
la source
sleep $((RANDOM % MAXWAIT))
est la bonne façon. Je vais modifier la réponse comme telle.fqdn_rand
.dash
echo sleep $((RANDOM % 900))
retoursleep 0
. Cela signifie qu'il n'est pas sûr de l'utiliser dans des#!/bin/sh
scripts ou des endroits comme crontab. (Le problème semble être qu'ildash
ne comprend pas$RANDOM
)J'aime bien la solution innovante, mais pas idéale, du S19N. Je dis seulement que ce n'est pas idéal, car il est encore largement non déterministe quand des choses se produiront réellement. Je préférerais de beaucoup pouvoir garantir quand des choses arriveront, et quelles choses arriveront quand cela arrivera.
L'orchestration de marionnettes est en fait un problème difficile .
L'une des solutions les "meilleures pratiques" consiste à utiliser MCollective qui vous permettra non seulement de configurer le moment où la marionnette s'exécute sur votre cluster de machines, mais vous pouvez également l'utiliser pour d'autres problèmes d'orchestration similaires.
la source