3

Итак, у меня есть дюжина серверов CentOS Linux. По большому счету, их конфигурация в основном одинакова.

Иногда мне нужно добавить дополнительное задание cron (отдельный файл crontab в /etc/cron.d/) и / или скопировать новый сценарий BASH / Perl на 10+ серверов, или запустить sed выражение, чтобы внести незначительные изменения в сценарий, который по сути, на каждом более 10 серверов.

Я очень устал от того, чтобы делать это на основе одного хоста очень быстро. Итак, как вы, ребята, справляетесь с этим вызовом? Какие-нибудь хитрости в ваших рукавах? Любое программное обеспечение, о котором я должен знать (бесплатно и доказано, что оно работает надежно)?

Я ищу способ сделать это через SSH, но мне также любопытны другие подходы.

4 ответа4

11

Вы открываете здесь огромную банку с червями. :) Существует большое количество различных подходов и решений этой (очень распространенной) проблемы. Это может быть что-то такое же базовое, как Parallels-SSH. Но то, что вы действительно ищете (но пока не знаете;), это система управления конфигурацией. Два наиболее популярных конкурирующих продукта / проекта: Puppet и Chef. Есть также много других продуктов, которые в конечном итоге позволяют вам выполнить ту же задачу. Я недавно узнал об Ansible, и это выглядит действительно многообещающе. При правильной реализации все эти решения позволят вам намного лучше администрировать многие другие системы. В Википедии есть статья со списком таких продуктов http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software

1

Вам нужно управление конфигурацией, как кукольный или шеф-повар. Существует довольно старая кривая обучения (привыкание к императивному идемпотентному стилю занимает немного времени), но как только вы преодолеете начальный горб, это замечательно для управления множеством одинаково настроенных серверов и поддержания их конфигурации в актуальном состоянии.

Вы также можете посмотреть на написание сценариев с использованием fabric - среды python, которая может выполнять команды через ssh, а также копировать файлы на серверы и с них. И переменная хоста может иметь список хостов, что делает это проще. Стоит посмотреть.

Тогда есть соль - движок удаленного исполнения, который очень хорошо масштабируется.

Но я бы просто выбрал инструменты управления конфигурацией и запустил их.

0

CFEngine существует уже давно именно для этой цели.

Лучшее решение для управления конфигурацией, если вам нужно:

  • Самое быстрое и масштабируемое решение
  • Знать фактическое состояние ваших систем
  • Решение с лучшими показателями безопасности
  • Полная гибкость и гранулированный контроль
  • Готовое к зрелому и корпоративному решению
0

Я бы сам создал список серверов, на которых должны выполняться команды. Настройте ssh-сертификаты между машиной, на которой выполняются команды, и серверами, на которых выполняются команды. Затем добавьте команды, которые необходимо выполнить, в сценарий и выполните цикл просмотра списка серверов, на которых выполняется команда. Возможно, вы захотите придумать систему ведения журнала, однако ошибки могут вызвать головную боль.

то есть:

список серверов:

10.0.0.1
10.0.0.2
10.0.0.3

скрипт, который запускает команды

#!/bin/bash
for server in `cat servers.lst`
do
ssh server some-command >> log.txt
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .