Używam func do wykonywania równoległych poleceń na naszych serwerach.
Pewnego dnia mieliśmy problem, gdy ponowne uruchomienie usługi puppet
via func
sprawiło, że wszystkie nasze serwery uderzyły w nas puppetmaster
w tym samym czasie.
Moje pytanie: Jak mogę wykonać to samo dokładne polecenie na zestawie serwerów, dodając opóźnienie przed wykonaniem go na poszczególnych serwerach?
Na przykład: random_delay && service puppet restart
Interesuje mnie random_delay
część polecenia.
linux
command-line-interface
puppet
Belmin Fernandez
źródło
źródło
sleep $((RANDOM % MAXWAIT))
jest właściwy sposób. Będę edytować odpowiedź jako taką.fqdn_rand
.dash
echo sleep $((RANDOM % 900))
zamiansleep 0
. Oznacza to, że nie jest bezpiecznie używać go w#!/bin/sh
skryptach lub miejscach takich jak crontab. (Wydaje się, żedash
problem polega na tym, że nie rozumie$RANDOM
)Bardzo podoba mi się innowacyjne, ale mniej niż idealne rozwiązanie S19N. Mówię tylko, że jest mniej niż idealna, ponieważ wciąż w dużej mierze nie jest deterministyczna, kiedy rzeczy się naprawdę wydarzą. Wolałbym raczej zagwarantować, kiedy coś się wydarzy i co się stanie, kiedy to się stanie.
Orkiestracja lalek jest w rzeczywistości trudnym problemem.
Jednym z „najlepszych praktyk” jest użycie MCollective, który nie tylko pozwoli ci skonfigurować, kiedy kukiełka działa na klastrze maszyn, ale możesz także użyć go do innych podobnych problemów z aranżacją.
źródło
Będzie to spać losowo od 0 sekund do 12 godzin (43200 = 12 x 60 x 60) co 12 godzin
źródło