Как документировать конфигурацию сервера Linux?
У меня есть около 20 серверов Linux, которые мне нужны для документирования конфигурации. Я имею в виду не детальную конфигурацию служб, а скорее учетные записи пользователей, базы данных, учетные записи баз данных, ip-адреса, физическое местоположение, порт SSH и т. Д. И т. Д. Я знаю, что все эти данные хранятся в конфигурационных файлах, но я хочу все это централизовать, Я подумываю просто создать электронную таблицу для записи этих данных, но мне было интересно, есть ли что-то лучшее (возможно, небольшое приложение php / mysql), которое было бы более структурированным и полным, чем взломанная вместе электронная таблица.
Что ты используешь?
6 ответов
Я предполагаю, что это долгосрочное документирование, а не просто попытка сделать снимок текущей конфигурации.
Вики работает сейчас и может держать вас в здравом уме некоторое время, но если ваша среда быстро изменится, у вас будут серьезные проблемы. Вам всегда нужно будет убедиться, что задания cron написаны правильно, выполнены своевременно, написаны для новых сервисов, совместимы с новыми версиями программного обеспечения и т. Д.
Подумайте об использовании инструмента управления конфигурацией, такого как Puppet или Cfengine. По крайней мере, поместите все данные, которые вы собираете, под контроль версий (например, Mercurial, git или Subversion).
Ваши данные конфигурации поступают отовсюду, а не централизуются. Вики всегда будет отставать от текущего состояния ваших машин. Вам необходимо централизовать данные конфигурации; заставить его течь от центра к краям. Но это правда, что иногда вам приходится выходить и собирать данные конфигурации. Cfengine может проводить проверки, марионетка может. Посмотрите на эту статью в Википедии, в которой перечислены другие менеджеры конфигурации.
В следующий раз, когда вы настроите машину, вы должны сначала установить на нее etckeeper. Таким образом, вы будете вести журнал изменений конфигурации.
Какой дистрибутив вы используете? Есть несколько довольно удобных инструментов для управления и аудита conffiles, и они, как правило, зависят от менеджера пакетов.
Мое предложение было бы просто создать вики для централизации информации и получить скрипт для редактирования страниц, чтобы файлы конфигурации автоматически обновлялись в вики через задание cron.
Если вы используете moin, вы должны проверить http://moinmo.in/ScriptMarket/PutPageScript.
Таким образом, вы получите:
Централизованная документация.
Современная конфигурация системы.
История изменений конфигурации.
Электронная таблица - это в основном двумерная сетка. Я считаю, что это не лучшая структура данных для таких вещей. Я предпочитаю деревья, поэтому я использую планировщики для управления деревьями.
Мой любимый Лев. Если вы хотите что-то, что будет работать на сервере без X, взгляните на htb (кажется, заброшенный) или на VOoM vim plugin.
Все эти инструменты используют простые текстовые файлы или XML в качестве бэкэнда. Совместно с системой контроля версий они создают мощную комбинацию.
Другой альтернативой будет ископаемое. Это распределенный инструмент контроля версий со встроенной вики и системой отслеживания билетов. Это один двоичный файл, который также может работать как CGI и обслуживать веб-интерфейс, что делает его доступным по сети. Ископаемое как мини-CMS для сайта очень мощное.
У нас есть 4 дата-центра в 3 странах. У нас более 500 производственных серверов. Как говорилось выше, мы используем вики и прикрепляем к ним файлы электронных таблиц. Хорошо то, что когда вы обновляете свою электронную таблицу и прикрепляете ее обратно в свою вики, она сохраняет историю этого. Как кто обновил файл и когда.
Но мы также закрываем нашу вики, пользователи не могут видеть почти любую страницу, если они не вошли в систему. Кроме того, страница, на которой установлен файл электронной таблицы, управляется с помощью тегов, использующих расширения accesscontrol.
-N
Один из подходов - начать с файла конфигурации, который читается достаточно хорошо, чтобы его можно было преобразовать в работающую конфигурацию или документацию. Это пример того, как я управляю экземплярами PostgreSQL:
# writer : The master where connections are enabled
# queryN : Standby servers
databases:
localharvestdb:
role_assignment:
writer: 172.16.0.3
query: 172.16.0.2
major_version: 11
comments: |
The master uses a replication slot that must be created manually
pgprobe:
role_assignment:
writer: 172.16.0.5
major_version: 12
Затем напишите сценарий, который может читать эти данные и выдавать конфигурацию системы, и другой сценарий, который может форматировать некоторую сводную документацию.
Два проекта, которые позволяют создавать собственную конфигурацию из скриптов:
- pyinfra - только Python
- rset (1): pln (5) - любой язык сценариев