Как избежать того, чтобы документация сервера не синхронизировалась с фактической настройкой?

У нас есть достаточно хорошая документация для нашей среды (в формате AsciiDoc), которая недавно позволила другому человеку воссоздать всю установку с нуля менее чем за 30 минут.
Тем не менее, я заметил, что после первоначальной установки легко случается, что в систему вносятся небольшие изменения (скажем: inetd отключается, мой IMAP-сервер прослушивает дополнительный порт для соединений ManageSieve, в конфигурацию exim добавляется новый маршрутизатор). Не попадайте в документацию немедленно (если вообще).

Моя идея состояла в том, чтобы избежать этой проблемы путем (частично?) Генерации документации из файлов конфигурации и комментариев к ней - одним из способов реализации этого может быть установка /etc а также /usr/local/etc в какую-то систему управления исходным кодом (скажем, git), а затем запустите скрипт, который обновляет документацию при каждом коммите. Тем не менее, я не уверен, будет ли это излишним и / или слишком трудным для понимания (в конце концов, я не хочу, чтобы в моей документации были полные копии исходных файлов, а скорее просто различия).

Как другие люди избегают устаревания документации сервера - есть ли хороший способ автоматически синхронизировать их, или у вас просто есть дисциплина для обновления документации в то же время, когда вы модифицируете систему?

3 ответа

Если вы управляете только одной или двумя небольшими системами, настройка большой системы управления конфигурациями, такой как puppet или chef, выглядит излишней. (Хотя, если вы планируете иметь больше систем в будущем, сделайте это сейчас!)

Для такой небольшой установки я бы рекомендовал использовать что-то вроде etckeeper, программа, которая ставит /etc в git хранилище и предоставляет несколько полезных функций, таких как автоматическая фиксация при установке, обновлении или удалении пакета.

Вам просто нужно обновлять документацию каждый раз, когда вы вносите изменения в систему. AKA Change Management,

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

Я использовал, чтобы использовать html или какая-то вики для отслеживания всех моих конфигов. Теперь я работаю в магазине Windows с (дрожью) SharePoint, поэтому теперь я использую "шаблоны" документов Word, которые я создал, чтобы отслеживать каждую систему, которую я имею, и каждое изменение конфигурации, которое я делаю, что не так плохо, как кажется, учитывая, что многие системы - это просто копии других файлов, которые можно объединить в один документ. (И я храню локальные копии всех своих документов на жестком диске, фактически организованные разумным способом, в дополнение к тому, что они выбрасываются в неорганизованную кучу, которая является чьим-либо сайтом SharePoint.)

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

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

  • Используйте инструмент управления конфигурацией (например, puppet или chef).
  • Храните ваши настройки в контролируемом порядке. (как мерзавец или SVN)
  • Убедитесь, что конфигурация читаема / доступна для людей (т.е. простой текст, доступный для поиска БД)

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

Внешняя документация все еще нуждается в обновлении, но она становится очень высокого уровня с указателями для "развертывания x" или "развертывания y" вместо длинных списков команд / файлов. Это дополнительно делает изменения документации менее частыми и более легкими, что также означает, что с большей вероятностью это будет сделано.

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

Другие вопросы по тегам