Как вы применяете методы разработки, такие как контроль версий, тестирование и непрерывная интеграция / развертывание, к системному администрированию?

18

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

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

Вообще или конкретно, как вы этого добиваетесь в системном администрировании?

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

arex1337
источник
Вы спрашиваете о технических инструментах или об основах для управления такими вещами? Потому что было бы трудно говорить о последнем варианте без упоминания таких вещей, как управление изменениями и выпусками из дисциплины ITIL.
Роб Моир
@ DJPon3 Хотелось бы узнать об общем подходе (как к нему относиться) и инструментах для этого. Не стесняйтесь использовать мой последний абзац в качестве отправной точки.
arex1337

Ответы:

15

Краткий ответ: «Управление развертыванием ОС», «Управление конфигурацией» и «Упаковка программного обеспечения». Длинный ответ следует.

Я хотел бы добавить к ответу Дэниела Питтмана с разбивкой того, что образует «систему» ​​в системном администрировании.

Система или среда будут состоять из:

  • Серверы
  • Операционная система
  • конфигурация
  • Пакеты поставщиков; и
  • Локальные пакеты

Охватывающие их будут такие процессы, как:

  • Развертывание ОС или создание образа
  • Управление конфигурацией
  • Управление программным пакетом
  • Аудит / регистрация
  • Мониторинг
  • Резервные копии

И вы хотели бы объединить их вместе, чтобы помочь вам в достижении нефункциональных целей, таких как:

  • стабильность
  • Ремонтопригодность
  • измеримость
  • Производительность
  • вроде возможностей отслеживания
  • способность быть свидетелем в суде
  • непостоянство

Это быстрая мозговая разрядка. Я уверен, что еще можно добавить во все списки.

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

Есть много инструментов, которые помогут вам в этом, некоторые из них упоминаются Даниэлем. Некоторые другие:

  • Kickstarts (на основе RedHat), Preseed (на основе Debian), WDS (MS Windows) для развертывания известных сред ОС
  • Spacewalk / Satellite (на базе RedHat), групповые политики (MS Windows) для настройки и управления пакетами
  • Пакетные системы YUM и APT для создания, развертывания, обновления и удаления пакетов (наборы двоичных файлов, данных и конфигурации, составляющие часть программного обеспечения)
  • Nagios, OpenNMS и SCOM для мониторинга
  • Аманда, Bacula и Windows Backup Server для резервного копирования
  • Munin, PCP и Hyperic для мониторинга производительности
  • CVS, SVN, GIT или Bazaar для контроля версий
  • Хадсон и Дженкинс за управление сборкой
  • Селен и Робот для тестирования
  • Bugzilla, Request Tracker и Jira для записи, связи и отслеживания

Опять же, это не исчерпывающий список, а то, что я держу в голове, чтобы помочь мне, и, надеюсь, это тоже поможет вам.

nearora
источник
Что такое Марвин? Я не могу найти ссылку на это, или это опечатка?
thelsdj
s / Marvin / Hudson / - спасибо, что заметили @thelsdj :-)
nearora
16

Отказ от ответственности: я один из разработчиков Puppet.

Очевидный способ - просто применить концепции: определить цикл разработки / тестирования / производства и провести через них изменения. Используйте контроль версий для отслеживания систем.

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

Такие инструменты, как Chef , Puppet , Salt и CFEngine - все это популярные инструменты для решения этой второй задачи. Они работают в общем направлении, превращая системное администрирование в центральное решение, которое вы можете контролировать и тестировать.

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

Даниэль Питтман
источник
15
Теперь мы знаем, кого беспокоить по поводу наших вопросов о
Куколах
1

В мире Windows эти проблемы, связанные с управлением жизненным циклом приложений, решаются с помощью System Center 2012.

В System Center Virtual Machine Manager (SCVMM) службы определяются с помощью «шаблонов служб» (например, классическая трехуровневая служба), а среды выполнения определяются как «облака» (например, разработка, подготовка, производство). Сервисные шаблоны могут быть версионированы и автоматически развернуты в разных облаках. Под прикрытием SCVMM выполняет работу по обеспечению, развертыванию и настройке виртуализированного оборудования (ВМ и т. Д.) И программного обеспечения (ОС, компоненты приложения и т. Д.).

System Center Service Manager - это то, что связывает это вместе с точки зрения процесса. Например, управление проблемами и контроль изменений.

Ричард Б
источник