Параллельное выполнение ssh команд на серверах
При управлении большим количеством серверов часто приходится выполнять одну и ту же команду сразу на нескольких серверах (десятках/сотнях/тысячах).
Существует немало инструментов для решения этой задачи. В .io мы применяем простое решение pssh.
На Ubuntu этот инструмент доступен в пакетах:
Перед использованием инструмента необходимо подготовить текстовые файлы с адресами серверов в формате:
Список IP серверов для выполнения команд с помощью pssh
Мы активно используем микросервисную архитектуру, поэтому у нас есть десятки сервисов. Поэтому мы создали общий файл со списком всех серверов и по файлу для каждого сервиса:
all.txt
хранит список всех серверов системы. Используется крайне редко;serviceX.txt
хранит список всех серверов конкретного сервиса.
Для выполнения команды на всех серверах:
Выполнит команду “ls -la” на всех серверах из файл all.txt
Результат команды будет записан в папку /tmp/ssh
— в отдельный файл для каждого сервера:
Для использовании авторизации по ключам:
key.rsa будет использовать для доступа ко всем серверам
Вы можете вручную задать количество потоков для выполнения команд:
команды будут выполняться в 10 потоков
TL;DR
Используйте pssh для выполнения команд на большом количестве серверов:
В all.txt нужно добавить список серверов, каждый ip адрес на новой строке
Источник: https://ruhighload.com/post/Выполнение+ssh+команд+на+нескольких+серверах