Pull to refresh

Comments 21

Неплохо. Но рекомендую взять готовый инструмент. В 2013 уже был, кстати. Очень удобная штука. Причём одним только удалённым выполнением команд не ограничивается. Тут и копирование файлов, и сложная логика, и локальное выполнение команд…
Сам пользовался для управления DNS-серверами. Информация на них была одна и та же, но вот версии сервера отличались и окружение тоже. А держать несколько копий данных мне не улыбалось. Тут-то меня Capistrano и выручил: небольшая правка скрипта — и вот уже в зависимости от хоста файлы исключаются из копирования или редактируются удалённом после приёма. Классная штука.

Спасибо за наводку, capistrano прошел мимо меня. Правильно ли я понимаю, что на клиентской стороне достаточно шелла и базовых команд? В документации этот момент четко не прописан.
UFO just landed and posted this here
В 2013-м я дотошно просмотрел все опции parallel ssh и ничего подобного не нашел. Может это все появилось позже? Параллельность у меня ограничена не была, просто при достижении определенного количества соединений начинали сыпаться ошибки.
Parallel SSH это pdsh или я что-то упускаю? Аналога pdcp я полагаю не завезли.

Жалко что про эту штуку не знает никто кроме админов ya/ex-ya… Надо будет хоть самому затестить как-нибудь.

Ну xc работает, чего его тестить — бери да пользуйся. Поудобнее xx даже местами.
А пользуется мало кто — так они уже не очень нужны. Полтора раза в год можно сделать for i in `cat file`; do ssh $i command; done и пойти кофе попить, остальное либо кубер, либо CMS делают.
Да я собственно не ищу чем заменить, я пытаюсь понять с чем автор сравнивает. Использую pdsh уже лет эдак 10 и все до сих пор более-менее устраивало, да и есть наверное в любом дистрибутиве…
Для pssh/pdsh/etc очень неудобно в гите списки хостов хранить, когда админов больше одного =) Для xc есть веб-сервис для inventory
Огромное спасибо за ссылку! Мне кажется, что из-за того, что существует еще вот этот проект возникла некоторая путаница. Я начинал с pssh и думаю ограничения, в которые я уперся, в частности вытекают из того, что pssh под капотом просто запускает ssh. Судя по readme pssh существовал уже как минимум в 2009-м. Первый PR parallel-ssh был создан в октябре 2013-го года, т.е. примерно тогда, когда я начал работу над ossh.
Самый ранний полагаю все-таки будет distributed shell (dsh) он же dancer's shell. Его еще в 2007м использовал. Сейчас чаще использую Parallel Distributed Shell или pdsh. Изначально они вообще были для использования с rsh.

Из статьи не совсем понятно, почему не ansible? Вроде бы тоже все делает через ssh, клиентов на узлах не требует. Не говоря уже про идемпотетность сценариев и прочее…

ansible это configuration management system. У нас уже был chef и мы уже были в процессе миграции на salt. Нам нужно было временное решение для деплоймента одного единственного пакета в этот промежуточный период. Если бы я предложил воспользоваться еще одной системой управления конфигурациями это как минимум вызвало бы непонимание.

ossh был сделан не для управления конфигурациями а именно для параллельного запуска команд. Из примеров, когда ossh мне помог, видно, что использовать для тех задач системы управления конфигурациями было бы затруднительно.
$ ansible all -i '<ip-address-1>,<ip-address-2>' --user=admin --private-key=~/.ssh/id_rsa -m shell -a "cat /etc/os-release"

К примеру, эта команда вернет содержимое файла /etc/os-release на любом указанном количестве хостов. Это если не хотите пользоваться playbook'ами и создавать инвентари :)
Точно так же можно поставить пакет, создать каталог и т.д (через shell-команды или используя встроенные модули ansible).

У нас в компании сейчас идет фаза перехода с Chef на Ansible. Это оказалось гораздо менее болезненным, чем казалось.
Какой максимальный параллелизм выдерживает ansible и насколько удобно парсить вывод?

Параллелизм — сколько задашь в ansible.cfg, ну и сколько памяти сожрёт питон при запуске на большом числе машин — проверить стоит.


Дефолтный вывод парсить не слишком удобно, но есть callback plugins, например json.


Вроде такого:


 ANSIBLE_LOAD_CALLBACK_PLUGINS=1 ANSIBLE_STDOUT_CALLBACK=json ansible all -i 'ip1,ip2' --user=root --private-key=~/.ssh/id_rsa -m command -a '/bin/cat /etc/fstab'  | jq .plays[0].tasks[0].hosts
Спрашиваю про параллелизм потому, что, к примеру, salt-ssh несколько лет назад не смог отработать на 500+ хостов. Тогда пришлось придумывать костыли с разбиением хостов на подгруппы.

В добавок к этому закину http://www.fabfile.org/
и http://www.paramiko.org/.
это если нужно на питоне sah параллельно запускать.
в сочетании с pyexpect, к примеру, позволяет делать довольно странные вещи.

Sign up to leave a comment.

Articles