Представьте, что вы собираетесь управлять несколькими серверами с помощью различных сервисов, которыми пользуется несколько человек. Теперь предположим, что вы хотите перенастроить или заменить какое-либо программное обеспечение на одном из этих серверов. Очевидно, вы не хотите работать на серверах, которые находятся в производстве.
Если бы это было изменение кода, как разработчик, я бы сделал изменение на моей локальной машине разработки, протестировал бы его локально и передал бы изменение в систему контроля версий. Затем изменения могут быть развернуты в промежуточной среде, дополнительно протестированы и, наконец, развернуты в производственной среде. Мне также было бы легко откатиться, если это необходимо.
Вообще или конкретно, как вы этого добиваетесь в системном администрировании?
(Первое, что приходит на ум, - это использовать виртуальные машины и помещать образы виртуальных машин в систему управления версиями, но я уверен, что есть много литературы и умных решений, о которых я пока не знаю.)
Ответы:
Краткий ответ: «Управление развертыванием ОС», «Управление конфигурацией» и «Упаковка программного обеспечения». Длинный ответ следует.
Я хотел бы добавить к ответу Дэниела Питтмана с разбивкой того, что образует «систему» в системном администрировании.
Система или среда будут состоять из:
Охватывающие их будут такие процессы, как:
И вы хотели бы объединить их вместе, чтобы помочь вам в достижении нефункциональных целей, таких как:
Это быстрая мозговая разрядка. Я уверен, что еще можно добавить во все списки.
Ваш вопрос касается ряда из них без использования конкретных слов. Например, вы хотите иметь возможность легко развертывать и возвращаться назад, то есть хотите обслуживаемость; Вы хотите сделать это в тестовой среде и тестировать, пока он не пройдет, т.е. повторяемость, тестируемость и измеримость; вы думаете о том, чтобы включить образы vm в систему управления версиями, потому что вам нужна повторяемость развертываний ОС и конфигурации.
Есть много инструментов, которые помогут вам в этом, некоторые из них упоминаются Даниэлем. Некоторые другие:
Опять же, это не исчерпывающий список, а то, что я держу в голове, чтобы помочь мне, и, надеюсь, это тоже поможет вам.
источник
Отказ от ответственности: я один из разработчиков Puppet.
Очевидный способ - просто применить концепции: определить цикл разработки / тестирования / производства и провести через них изменения. Используйте контроль версий для отслеживания систем.
Короче говоря, если вы начнете идти по этому пути, вы обнаружите, что вам действительно нужны инструменты, которые автоматизируют эти вещи - по сути, вы хотите автоматизировать системное администрирование, чтобы вы не использовали эти методы на машинах, вы используете их в системе, которая управляет машинами.
Такие инструменты, как Chef , Puppet , Salt и CFEngine - все это популярные инструменты для решения этой второй задачи. Они работают в общем направлении, превращая системное администрирование в центральное решение, которое вы можете контролировать и тестировать.
Движение DevOps - еще один источник хорошей информации о том, как это сделать. Хотя принцип заключается в улучшении сотрудничества между разработчиками и эксплуатационным персоналом, он также направлен в том же направлении.
источник
В мире Windows эти проблемы, связанные с управлением жизненным циклом приложений, решаются с помощью System Center 2012.
В System Center Virtual Machine Manager (SCVMM) службы определяются с помощью «шаблонов служб» (например, классическая трехуровневая служба), а среды выполнения определяются как «облака» (например, разработка, подготовка, производство). Сервисные шаблоны могут быть версионированы и автоматически развернуты в разных облаках. Под прикрытием SCVMM выполняет работу по обеспечению, развертыванию и настройке виртуализированного оборудования (ВМ и т. Д.) И программного обеспечения (ОС, компоненты приложения и т. Д.).
System Center Service Manager - это то, что связывает это вместе с точки зрения процесса. Например, управление проблемами и контроль изменений.
источник