Управляйте несколькими серверами Linux одновременно

Управляйте несколькими серверами Linux одновременно

У меня есть небольшой кластер, состоящий из нескольких узлов Linux. Есть общий NFS, и у меня есть одна учетная запись пользователя с общими ключами SSH на всех узлах, но кроме этого у каждого узла есть своя файловая система и конфигурация.

Я хочу иметь возможность контролировать конфигурацию всех узлов с центрального узла. Типичная конфигурация в основном состоит из файлов конфигурации, как в каталоге пользователя, так и в /etcили /opt. Иногда мне также нужно установить те же пакеты на всех узлах или запустить другие команды оболочки.

Это небольшой кластер, который вряд ли оправдывает системы автоматизации уровня предприятия или другие сложные установки. Есть ли другой способ, который вы пробовали и тестировали, желательно легкий и с открытым исходным кодом? Или даже основанный непосредственно на хаках BASH/SSH? Спасибо.

решение1

Я настоятельно рекомендую Saltstack. Он гибкий, масштабируемый, легкий и бесплатный.

http://www.saltstack.com

решение2

Ансибльдолжно подойти, если вы управляете ими из Linux или Mac OS X с помощью homebrew. Windows не поддерживается для управляющей машины. Узлы Linux должны иметь SSH и Python, но поскольку большинство дистрибутивов Linux устанавливают Python по умолчанию, вы, вероятно, уже охвачены. Все, что вам нужно сделать, этоустановитьansible на главном сервере, что должно быть легко.

Посмотрите 23 минутыВидео о быстром стартечтобы получить лучшее представление. Я также рекомендую взглянуть наВведение в специальные командыраздел из документации:

  • Запустите команду на всех серверах в группе, в данном случае atlanta, в 10 параллельных ответвлениях:

    $ ansible atlanta -a "/sbin/reboot" -f 10
    
  • Убедитесь, что пакет установлен, но не обновляйте его:

    $ ansible webservers -m yum -a "name=acme state=installed"
    
  • Чтобы передать файл напрямую на несколько разных серверов:

    $ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
    
  • Убедитесь, что служба запущена на всех веб-серверах:

    $ ansible webservers -m service -a "name=httpd state=started"
    

Есть также некоторыеПримерыиз сборников пьес.

решение3

Для запуска команд вы можете использовать инструмент, который может запускать команду на нескольких серверах SSH.

Вот некоторые из них:

  1. псш
  2. Кластер SSH

Оба доступны в Debian и Ubuntu.

решение4

ПытатьсяОжидатьскрипты. Это отличный способ автоматизировать выполнение одних и тех же задач на нескольких машинах.

С помощью сценариев expect вам не придется вручную входить в каждую машину и выполнять одну и ту же задачу снова и снова. Я использую это для таких вещей, как смена паролей пользователя на всех машинах, запуск сценариев проверки на каждой машине и т. д.

Связанный контент