Сегодня хочу показать вам инструменты, которые входят в мой личный топ полезных утилит для работы с множеством серверов. Их главная суперсила - параллельное выполнение задач.
Давайте я просто покажу примеры использования с кратким описанием и все сами поймете.
pdsh - инструмент, который позволяет выполнять команды на множестве хостов параллельно.
# Проверим uptime на хостах начиная с 1 по 5, исключив 3
pdsh -w node[1-5] -x node3 uptime
# Перезагрузим все хосты, кроме node3 и node7
pdsh -w node[1-10] -x node3,node7 'sudo reboot'
Если вы достаточно организованы, чтобы вести список хостов - можно даже использовать файл с заранее определенными хостами
# File: my_hosts.txt
# node1
# node2
# db[01-05]
pdsh -w "^my_hosts.txt" 'uptime'
Вы скажете:
так тебе же ничего не мешает использовать для этих целей Ansible!
ansible -i 'node1,node2,node3' all -m shell -a 'uptime'
И будете совершенно правы - ничего не мешает, но это же круто знать о существовании альтернативных инструментов инструментов, тем более ansible может и не оказаться под рукой.
Когда одного pdsh мало - берите PSSH.
pssh - отличная альтернатива pdsh
# Одновременное обновление пакетов на всех хостах
pssh -h production_servers.txt -l admin -t 300 "sudo apt update && sudo apt upgrade -y"
pscp - массовое копирование на сервера
# Залить скрипт мониторинга на все хосты
pscp -h all_hosts.txt monitor_script.sh /usr/local/bin/
prsync - параллельное копирование через rsync
# Обновить статические файлы только если они изменились
prsync -h cdn_nodes.txt -a "-avz" static/ /var/www/static/
pslurp - собрать файлы с серверов на локальную тачку
# Собрать логи со всех серверов в отдельные папки
pslurp -h servers.txt -l user -L ./collected_logs /var/log/app/error.log app_error.log
Эти инструменты не заменят полноценные системы управления конфигурациями вроде Ansible или chef, но для быстрых задач, срочных исправлений или массового сбора информации - они незаменимы.
Другие авторские статьи по теме DevOps, SRE и администрирования вы можете найти в моем Telegram-канале DevOps Brain ↩
Top comments (0)