Я больше разработчик приложений для Linux, чем администратор. Со временем я построил серверы и обслужил их, иногда для предоставления услуг, в основном просто для разработки приложений, над которыми я работаю.
Давным-давно, когда я создавал файл в своей учетной записи, чтобы вести записи о том, что я делал на каждой машине, чтобы я мог воспроизвести это при миграции на другие машины.
В настоящее время я устанавливаю частную установку trac, устанавливаю его плагин для блога, а затем использую это, чтобы делать заметки обо всем, что я устанавливаю, и о большинстве команд, которые я запускаю, а также о результатах. Это дает мне сочетание вики и блога, которое я считаю очень полезным как «капитанский журнал». Я делаю это в основном для того, чтобы, когда я перехожу на новую чистую машину, мне было намного легче ее запустить.
И все же я всегда удивляюсь, когда вижу, как другие просто устанавливают это, удаляют это, запускают это, настраивают эту конфигурацию, ... не используя никакого способа фактически отметить, что они делают.
Чем ВЫ занимаетесь и какие инструменты доступны?
Меня особенно интересует переход между обслуживанием нескольких машин для нескольких человек и обслуживанием от нескольких до десятков машин, обеспечивающих реальное обслуживание.
Каковы лучшие практики и где я могу найти хорошие ресурсы?
Спасибо!
Ответом на это, безусловно, является формальное управление конфигурацией. В наши дни три главных претендента на этот рынок - Chef, Puppet и Cfengine. По сути, вам нужно применить подход к разработке к системному администрированию: напишите «программу», которая определяет состояние машины, и примените ее (очевидно, это грубое упрощение).
По правде говоря, многие из нас, администраторов Linux, «волшебных» конфигурируют машины, потому что мы полностью усвоили знания за многие годы повторения. Я приблизительно знаю список конфигурационных файлов, к которым мне нужно прикоснуться на любой машине, и я могу вручную редактировать их из памяти. На самом деле это ужасный способ делать что-то, особенно если у вас более одного сервера или более одного системного администратора. Ручное редактирование файла конфигурации - всегда признак плохого планирования и плохого управления.
Я большой поклонник использования Clonezilla плюс загрузка PXE для автоматического первоначального запуска системы и внесения достаточного количества деталей в конфигурацию Kickstart, чтобы машина находилась в сети и запускала инструмент CM по вашему выбору. Все, что выходит за рамки самой простой логики «запустить систему, подключить ее к сети», должно быть включено в ваш инструмент CM, не в исходном образе системы или в Kickstart.
Для справки: в настоящее время я администрирую около 10 000 серверов unix.
Ваш вопрос касается подхода к этому с точки зрения нескольких машин. Дело не в записи ваших команд. Для этого команда сценария должна получить то, что вы просите. Но реальное решение масштабирования - это возможность быстро воспроизводить конфигурации и управлять изменениями в этих конфигурациях. Такие инструменты, как Кукольный и Повар позволит вам это сделать. Рецепты обычно хранятся в системе контроля версий, так что вы можете полностью видеть каждое изменение, внесенное в конфигурацию, и при необходимости возвращаться к предыдущим конфигурациям.
Когда эти инструменты сочетаются с загрузкой PXE и предварительной загрузкой или кикстартом, вы можете быстро подготовить машины для различных ролей.
Неплохая идея использовать инструменты такого рода, даже если вы управляете всего несколькими машинами для управления изменениями и отслеживания, которые он предоставляет.