Исходя из администрирования Windows, я хочу углубиться в Linux (Debian). Один из моих острых вопросов, на которые я не смог ответить при поиске в Интернете (не нашел его): как мне добиться так называемого удаленного взаимодействия «один ко многим», как в PowerShell для Windows?
Чтобы разбить его на основы, я бы сказал:
Мой взгляд на Linux:
- Я могу SSH на сервер и введите мою команду
- Я получаю результат. Для среды из 10 серверов мне нужно было бы написать (perl / python?) Скрипт, отправляющий команду для каждого из них?
Мой опыт работы с Windows:
Я набираю свою команду и с помощью «invoke-command» могу «отправить» ее на несколько серверов (возможно, из текстового файла), чтобы выполнить одновременно и получить результат обратно (как объект для дальнейшей работы).
Я даже могу установить несколько сеансов, соединение поддерживается в фоновом режиме, и выборочно отправлять команды на эти сеансы и удаленно входить и выходить, как мне нужно.
(Я слышал о поваре, марионетке и т. Д. Это что-то подобное?)
Update 2019:
После многих попыток - я предлагаю Rex (см. Этот комментарий ниже ) - простую настройку (для этого просто нужен ssh, больше ничего) и использование (если вы знаете немного Perl, это даже лучше, но это необязательно)
с Rex (ify ) вы можете выполнить команду adhoc и перейти к реальному управлению конфигурацией (... это означает, что это КМ, в первую очередь, но также хорош для задач adhoc). Сайт кажется устаревшим, но в настоящее время (по состоянию на 01/2019) он активно развивается, и IRC-канал также активен.
С новым openssh Windows есть еще больше возможностей
можешь попробовать:
rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'
:setw synchronize-panes on
( unix.stackexchange.com/a/124800/161003 )Ответы:
Резюме
ClusterSSH
Для отправки удаленных команд на несколько серверов, для начинающих я бы порекомендовал clusterssh
Чтобы установить
clusterssh
в Debian:Еще один кластерный урок :
анзибль
Что касается удаленной инфраструктуры для администрирования нескольких систем, Ansible является очень интересной альтернативой Puppet. Он более бережный, и ему не нужны выделенные удаленные агенты, так как он работает через SSH (он также был куплен RedHat)
Playbooks более сложны, чем параметры командной строки.
Однако, чтобы начать использовать Ansible, вам нужна простая установка и настройка текстового файла списка клиентов.
После этого, чтобы выполнить команду на всех серверах, это так же просто, как сделать:
Вывод также очень хорошо отформатирован и разделен для каждого правила / сервера, и во время работы в фоновом режиме его можно перенаправить в файл и просмотреть позже.
Вы можете начать с простых правил, и использование Ansible будет становиться все интереснее по мере того, как вы будете расти в Linux, и ваша инфраструктура станет больше. Как таковой он будет делать гораздо больше, чем PowerShell.
Например, очень простая Playbook для обновления серверов Linux, которую я написал:
Он также имеет много определенных модулей, которые позволяют вам легко создавать комплексные политики.
Индекс модуля - Ansible Documentation
У него также есть интересный официальный хаб / «социальная» сеть репозиториев для поиска уже сделанных политиками сообщества. Галактика
Ansible также широко используется, и вы найдете множество проектов в github, например, этот от меня для установки FreeRadius .
Хотя Ansible является бесплатной платформой с открытым исходным кодом, она также имеет платный интерфейс веб-панели, Ansible Tower, хотя лицензирование довольно дорогое.
В настоящее время, после того, как RedHat купил его, Tower также имеет версию с открытым исходным кодом, известную как AWX .
В качестве бонуса, Ansible также способен администрировать серверы Windows, хотя я никогда не использовал его для этого.
Он также способен администрировать сетевое оборудование (маршрутизаторы, коммутаторы и брандмауэры), что делает его очень интересным решением для автоматизации под ключ.
Как установить Ansible
Rundeck
Еще раз, для удаленного фреймворка, более легкого в использовании, но не настолько мощного, как Ansible, я рекомендую Rundeck .
Это очень мощный графический интерфейс для нескольких пользователей и входа в систему, в котором вы можете автоматизировать многие из ваших обычных повседневных задач и даже предоставлять расширенные представления системным администраторам или сотрудникам службы поддержки.
При запуске команд также отображаются окна с выходными данными, разбитыми по серверу / задаче.
Он может беспрепятственно выполнять несколько заданий в фоновом режиме и позволяет просматривать отчет и выводить его позже.
Как установить RunDeck
Обратите внимание, что есть люди, использующие Ansible + RunDeck в качестве веб-интерфейса; не все дела присваиваются для этого.
Само собой разумеется, что использование Ansible и / или RunDeck может быть истолковано как форма или часть документации инфраструктуры, и со временем позволяет копировать и улучшать действия / рецепты / Playbooks.
Наконец, говоря о центральном командном сервере, я бы создал его для этой задачи. На самом деле технический термин - прыжковая коробка. «Ящики для прыжков» повышают безопасность, если вы правильно их настроили .
источник
Если вы хотите сделать это в интерактивном режиме, вы можете использовать,
terminator
который позволяет транслировать команду на несколько терминалов.См .: Как запустить одну и ту же команду linux в нескольких вкладках / оболочке одновременно?
источник
tmux
:set sync on
Вы также можете использовать
pssh
(илиparallel-ssh
), который является SSH-клиентом, который подключается к списку хостов и выполняет команду на всех хостах параллельно:источник
Возможно, вы можете достичь своей цели с помощью простой функции zsh (bash). Допустим, у вас есть серверы l61, l62, l63, и вам часто нужно запустить на них команду:
Итак, в командной строке:
источник
Если вы используете KDE, вот другой метод.
- Откройте окно Konsole.
Для каждого сервера, с которым вы хотите установить связь:
- открыть вкладку
- установить ssh-соединение с сервером.
В меню «Редактировать» выбрать «копировать ввод» во «все вкладки».
Каждая команда, которую вы вводите на этой вкладке, будет скопирована на все серверы.
Вы можете переключаться с вкладки на вкладку, чтобы посмотреть на разные результаты.
Примечание: мои ярлыки меню (в кавычках) могут быть неправильными, так как я не использую английскую версию KDE
источник
Параллельный GNU
Он позволяет использовать простые однострочники с сохраненными настройками, поэтому вы можете создать профиль «prod», который будет содержать список серверов и общие параметры. Затем просто добавьте нужную команду, и вы готовы. Он также может копировать файлы в сервер и автоматически удалить их в конце, и это довольно удобно для еще больших сценариев. Также это очень быстро.
Единственная проблема в том, что у него так много опций;) Но документация также включает в себя множество примеров, так что вы можете просто посмотреть на них в начале.
источник
Я также хочу упомянуть «Рекс» здесь: https://www.rexify.org/
Это потрясающий инструмент, использующий perl + ssh (аутентификация пользователя / пароля или ключа), и поскольку perl установлен в каждой (?!) Системе linux, я думаю, что он кажется более естественным в использовании (он имеет некоторые сходства с Ansible & Co.)
вы можете запускать команды adhoc на нескольких серверах одновременно (server1, server2, server ... - после настройки аутентификации или в качестве альтернативы использовать параметры -p / -u и -s / -S для выполнения команды sudo):
или создайте файл, в котором вы указываете различные «задачи» и вызываете их оттуда
Его можно установить через репозитории или даже с помощью perls cpan (или
cpanm Rex
), и его первоначальная настройка проста, см .:- https://www.rexify.org/ или
- https://www.rexify.org/docs/guides/. start_using__r__ex.html и
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex
источник