Я использую func для выполнения параллельных команд на наших серверах.
На днях у нас возникла проблема, когда при перезапуске службы puppet
via func
все наши серверы работали puppetmaster
одновременно.
Мой вопрос: как я могу выполнить одну и ту же команду на наборе серверов, добавив задержку перед выполнением на отдельных серверах?
Например: random_delay && service puppet restart
Я заинтересован в random_delay
части команды.
linux
command-line-interface
puppet
Бельмин Фернандес
источник
источник
sleep $((RANDOM % MAXWAIT))
это правильный путь. Я отредактирую ответ как таковой.fqdn_rand
.dash
echo sleep $((RANDOM % 900))
возвратsleep 0
. Это означает, что это небезопасно для использования в#!/bin/sh
сценариях или таких местах, как crontab. (Проблемы вроде бы в том,dash
что не понимают$RANDOM
)Мне очень нравится инновационное, но не идеальное решение S19N. Я только говорю, что это не идеально, так как все еще в значительной степени недетерминировано, когда что-то действительно произойдет. Я бы предпочел гарантировать, когда что-то случится, и что произойдет, когда это произойдет.
Кукольный оркестр на самом деле сложная проблема.
Одним из лучших решений является использование MCollective, которое позволит вам не только настраивать при запуске куколки на вашем кластере машин, но также использовать его для решения других подобных проблем оркестровки.
источник