Управление серверами Ubuntu
Управление серверами Ubuntu
Возникла потребность запускать однотипные команды сразу на нескольких серверах
Решений как обычно масса. Выбор пал на pdsh
pdsh – параллельный клиент удаленного управления.
Ставим
sudo apt-get install pdsh
Изменим клиент RCMD по умолчанию для SSH
sudo -s echo "ssh" > /etc/pdsh/rcmd_default exit
Теперь необходимо обеспечить без парольный доступ на сервера.
Для этого генерируем сертификат, и рассылаем его по нужным нам серверам
ssh-keygen -q
Везде жамкаем Enter
Копируем сертификат на сервера
Сертификаты лежат в папке .ssh которая находится пользователя
ssh-copy-id -i .ssh/id_rsa.pub virtual@10.10.10.6 ............... ssh-copy-id -i .ssh/id_rsa.pub virtual@10.10.10.50
Проверяем работу на конкретном сервере 10.10.10.8
pdsh -l virtual -w 10.10.10.8 'lsb_release -d'
10.10.10.8: Description: Ubuntu 10.04.4 LTS
Если получаем такую ошибку. Значит пункт “Изменим клиент RCMD по умолчанию для SSH” не выполнен
10.10.10.8: rcmd: socket: Permission denied
Проверяем работу на нескольких серверах 10.10.10.8 и 10.10.10.6
pdsh -l virtual -w 10.10.10.8,10.10.10.6 'lsb_release -d'
10.10.10.8: Description: Ubuntu 10.04.4 LTS 10.10.10.6: Description: Ubuntu 12.04.5 LTS
Немного сократим запись. Создадим файл со списком серверов, перечисленных через запятую
nano servlist.conf
10.10.10.38,10.10.10.11,10.10.10.50,10.10.10.9,10.10.10.8,10.10.10.6
Вызываем команду используя список
pdsh -l virtual -w `cat servlist.conf` 'lsb_release -d'
10.10.10.6: Description: Ubuntu 12.04.5 LTS 10.10.10.38: Description: Ubuntu 16.04.1 LTS 10.10.10.9: Description: Ubuntu 14.04.1 LTS 10.10.10.8: Description: Ubuntu 10.04.4 LTS 10.10.10.11: Description: Ubuntu 14.04.2 LTS 10.10.10.50: Description: Ubuntu 12.04.5 LTS