Как я могу автоматизировать параллельное выполнение команд через SSH на нескольких серверах? - PullRequest
18 голосов
/ 28 октября 2008

Я немного искал похожие вопросы, но кроме выполнения одной команды или нескольких команд с такими элементами, как:

ssh user@host -t sudo su -

Однако, что если мне нужно запустить скрипт (скажем, на 15 серверах одновременно). Это выполнимо в Bash? В идеальном мире мне нужно избегать установки приложений, если это вообще возможно. Ради аргумента, давайте просто скажем, что мне нужно сделать следующее на 10 хостах:

  1. Развертывание нового контейнера Tomcat
  2. Разверните приложение в контейнере и настройте его
  3. Настройка Apache vhost
  4. Перезагрузить Apache

У меня есть скрипт, который делает все это, но он полагается на то, что я захожу на все серверы, вытаскиваю скрипт из репозитория и запускаю его. Если это невозможно в bash, какие альтернативы вы предлагаете? Нужен ли мне больший молоток, такой как Perl (Python может быть предпочтительнее, так как я могу гарантировать, что Python есть на всех блоках в среде RHEL благодаря yum / up2date)? Если кто-нибудь может указать мне какую-либо полезную информацию, она будет очень признательна, особенно если это возможно в bash. Я соглашусь на Perl или Python, но я просто не знаю их (работает над этим). Спасибо!

Ответы [ 21 ]

0 голосов
/ 29 октября 2008

Я не уверен, что этот метод будет работать для всего, что вы хотите, но вы можете попробовать что-то вроде этого:

$ cat your_script.sh | ssh your_host bash

Который будет запускать скрипт (который находится локально) на удаленном сервере.

...