Статья, перевод которой мы сегодня публикуем, посвящена технологиям одновременного выполнения команд на нескольких Linux-серверах. Речь здесь пойдёт о нескольких широко известных инструментах, реализующих подобный функционал. Этот материал пригодится системным администраторам, которым, например, регулярно приходится проверять состояние множества удалённых систем. Предполагается, что у читателя уже имеется несколько серверов, к которым организован доступ по SSH. Кроме того, при одновременной работе с несколькими машинами весьма полезно настроить SSH-доступ к ним по ключу, без пароля. Такой подход, с одной стороны, повышает безопасность сервера, а с другой — облегчает работу с ним.
PSSH — это опенсорсный набор инструментов командной строки, написанный на Python и предназначенный для параллельного выполнения SSH-команд на множестве Linux-систем. Он быстро работает и лёгок в освоении. PSSH включает в себя такие средства, как
Перед установкой
Затем
Далее, нужно внести имена хостов или IP-адреса удалённых Linux-серверов и сведения о портах в файл
Вот пример содержимого такого файла:
После того, как в файл будет внесено всё необходимое, пришло время запустить
Команда запуска
На следующем рисунке показано использование утилиты при работе с тремя серверами.
Утилита parallel-ssh выполняет команды на нескольких серверах
Pdsh — это, опять же, опенсорсное решение, представляющее собой оболочку для одновременного выполнения команд на нескольких Linux-серверах.
Вот как установить
Для того чтобы выполнять команды на нескольких серверах, адреса этих серверов, как и при использовании
Здесь флаг
Вот как выглядит работа с этой командой.
Выполнение команд на нескольких серверах с использованием pdsh
Если вы, при вызове
ClusterSSH — это инструмент командной строки, предназначенный для администрирования кластеров серверов. Он запускает консоль администратора и, для каждого сервера, отдельное окно
Установим
Теперь, для подключения к серверам, нужно выполнить команду следующего вида:
Можно воспользоваться и такой конструкцией:
После этого вы увидите нечто, подобное тому, что показано на следующем рисунке.
Работа с несколькими серверами с помощью clusterssh
Команды, введённые в консоли администратора, выполняются на всех серверах. Для выполнения команд на отдельном сервере нужно вводить их в окне, открытом для него.
Ansible — это популярный опенсорсный инструмент для автоматизации IT-процессов. Он используется для настройки систем и для управления ими, для установки приложений и для решения других задач.
Установим
После этого надо добавить адреса серверов в файл
Вот пример фрагмента подобного файла с несколькими системами, объединёнными в группу
Теперь, для того, чтобы получить сведения команды
Здесь опция
Обратите внимание на то, что интерфейс командной строки
Взаимодействие с несколькими серверами средствами ansible
В этом материале мы рассказали об инструментах, которые предназначены для одновременного выполнения команд на нескольких серверах, работающих под управлением Linux. Если вы подумываете об автоматизации задач по управлению множеством серверов — надеемся, вы найдёте здесь что-нибудь такое, что вам подойдёт.
Уважаемые читатели! Знаете ли вы о каких-нибудь полезных утилитах, упрощающих администрирование большого количества серверов?
1. PSSH — Parallel SSH
PSSH — это опенсорсный набор инструментов командной строки, написанный на Python и предназначенный для параллельного выполнения SSH-команд на множестве Linux-систем. Он быстро работает и лёгок в освоении. PSSH включает в себя такие средства, как
parallel-ssh
, parallel-scp, parallel-rsync
, parallel-slurp
и parallel-nuke
(подробности об этих средствах можно посмотреть в man).Перед установкой
parallel-ssh
в Linux-системе сначала надо установить pip
. Вот как это делается в разных дистрибутивах:$ sudo apt install python-pip python-setuptools #Debian/Ubuntu
# yum install python-pip python-setuptools #RHEL/CentOS
# dnf install python-pip python-setuptools #Fedora 22+
Затем
parallel-ssh
устанавливают с использованием pip
:$ sudo pip install parallel-ssh
Далее, нужно внести имена хостов или IP-адреса удалённых Linux-серверов и сведения о портах в файл
hosts
(на самом деле, назвать его можно как угодно). Тут нам пригодится такая команда:$ vim hosts
Вот пример содержимого такого файла:
192.168.0.10:22
192.168.0.11:22
192.168.0.12:22
После того, как в файл будет внесено всё необходимое, пришло время запустить
parallel-ssh
, передав этой утилите имя файла с использованием опции -h
, а также — команды, которые нужно выполнить на всех серверах, адреса которых имеются в файле hosts
. Флаг -i
утилиты используется для того, чтобы вывести на экран то, что попадёт в стандартные потоки вывода и ошибок после завершения выполнения команд на серверах.Команда запуска
parallel-ssh
может выглядеть так:$ parallel-ssh -h hosts "uptime; df -h"
На следующем рисунке показано использование утилиты при работе с тремя серверами.
Утилита parallel-ssh выполняет команды на нескольких серверах
2. Pdsh — Parallel Remote Shell Utility
Pdsh — это, опять же, опенсорсное решение, представляющее собой оболочку для одновременного выполнения команд на нескольких Linux-серверах.
Вот как установить
pdsh
в различных дистрибутивах:$ sudo apt install pdsh #Debian/Ubuntu
# yum install pdsh #RHEL/CentOS
# dnf install pdsh #Fedora 22+
Для того чтобы выполнять команды на нескольких серверах, адреса этих серверов, как и при использовании
parallel-ssh
, надо добавить в файл, который тоже можно назвать hosts
. Затем нужно запустить pdsh
в следующем виде:$ pdsh -w ^hosts -R ssh "uptime; df -h"
Здесь флаг
-w
используется для указания файла со списком серверов, флаг -R
применяется для указания модуля удалённых команд (среди доступных модулей удалённых команд имеются ssh
, rsh
, exec
; по умолчанию используется rsh
). Обратите внимание на значок ^
перед именем файла со списком серверов.Вот как выглядит работа с этой командой.
Выполнение команд на нескольких серверах с использованием pdsh
Если вы, при вызове
pdsh
, не указали список команд, которые надо выполнить на серверах, эта утилита запустится в интерактивном режиме. Подробности о pdsh
можно узнать на соответствующей странице man.3. ClusterSSH
ClusterSSH — это инструмент командной строки, предназначенный для администрирования кластеров серверов. Он запускает консоль администратора и, для каждого сервера, отдельное окно
xterm
. После этого на всех этих серверах можно одновременно выполнять одни и те же команды.Установим
clusterssh
:$ sudo apt install clusterssh #Debian/Ubuntu
# yum install clusterssh #RHEL/CentOS
$ sudo dnf install clusterssh #Fedora 22+
Теперь, для подключения к серверам, нужно выполнить команду следующего вида:
$ clusterssh linode cserver contabo
Можно воспользоваться и такой конструкцией:
$ clusterssh username@server1 username@server2 username@server3
После этого вы увидите нечто, подобное тому, что показано на следующем рисунке.
Работа с несколькими серверами с помощью clusterssh
Команды, введённые в консоли администратора, выполняются на всех серверах. Для выполнения команд на отдельном сервере нужно вводить их в окне, открытом для него.
4. Ansible
Ansible — это популярный опенсорсный инструмент для автоматизации IT-процессов. Он используется для настройки систем и для управления ими, для установки приложений и для решения других задач.
Установим
ansible
:$ sudo apt install ansible #Debian/Ubuntu
# yum install ansible #RHEL/CentOS
$ sudo dnf install ansible #Fedora 22+
После этого надо добавить адреса серверов в файл
/etc/ansible/hosts
.$ sudo vim /etc/ansible/hosts
Вот пример фрагмента подобного файла с несколькими системами, объединёнными в группу
webservers
:# Ex 2: A collection of hosts belonging to the 'webservers' group
[webservers]
139.10.100.147
139.20.40.90
192.30.152.186
Теперь, для того, чтобы получить сведения команды
uptime
и узнать, какие пользователи подключены к хостам, входящим в группу webservers
, можно воспользоваться следующей конструкцией:$ ansible webservers -a "w " -u admin
Здесь опция
-a
используется для указания аргументов, передаваемых модулю, а флаг -u
позволяет задать имя пользователя по умолчанию, применяемое для подключения к удалённым серверам по SSH.Обратите внимание на то, что интерфейс командной строки
ansible
позволяет выполнять команды лишь по одной.Взаимодействие с несколькими серверами средствами ansible
Итоги
В этом материале мы рассказали об инструментах, которые предназначены для одновременного выполнения команд на нескольких серверах, работающих под управлением Linux. Если вы подумываете об автоматизации задач по управлению множеством серверов — надеемся, вы найдёте здесь что-нибудь такое, что вам подойдёт.
Уважаемые читатели! Знаете ли вы о каких-нибудь полезных утилитах, упрощающих администрирование большого количества серверов?