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


18

Уявіть, що ви збираєтесь керувати декількома серверами з багатьма різними сервісами, якими користується декілька людей. Тепер скажіть, що ви хочете переналаштувати або замінити якесь програмне забезпечення на одному з цих серверів. Очевидно, ви не хочете працювати на серверах, які знаходяться у виробництві.

Якби це була зміна коду, я як розробник зробив би зміни на своїй локальній машині розробки, перевірив її локально і вчинив зміни в системі контролю версій. Потім зміни можуть бути розгорнуті в умовах постановки, додатково протестовані та остаточно розгорнені у виробничому середовищі. Також мені було б легко відкотитись, якщо потрібно.

Як правило, або конкретно, як ви цього досягаєте в системному адмініструванні?

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


Ви питаєте про технічні засоби чи про рамки для управління подібними речами? Тому що було б важко говорити про останній варіант, не згадуючи такі речі, як зміни та звільнення управління від дисципліни ITIL.
Роб Моїр

@ DJPon3 Я хотів би знати про загальний підхід (як про це думати) та інструменти для цього. Сміливо використовуйте мій останній абзац як вихідну точку.
arex1337

Відповіді:


15

Коротка відповідь - "Управління розгортанням ОС", "Управління конфігурацією" та "Упаковка програмного забезпечення". Звідси випливає довга відповідь.

Я хотів би додати відповідь Деніела Пітмена з розбиттям того, що утворює "систему" в адміністрації системи.

Система або середовище складається з:

  • Сервери
  • Операційна система
  • Конфігурація
  • Пакети постачальників; і
  • Місцеві пакети

Обгортання цих процесів, таких як:

  • Розгортання або візуалізація ОС
  • Управління конфігурацією
  • Управління програмним пакетом
  • Аудит / ведення журналів
  • Моніторинг
  • Резервні копії

І ви хочете, щоб вони поєднувалися разом, щоб допомогти вам у досягненні нефункціональних цілей, таких як:

  • Повторність
  • Технічне обслуговування
  • Вимірюваність
  • Продуктивність
  • Простежуваність
  • Заповітність
  • Змінність

Це швидкий відвал мозку. Я впевнений, що до всіх списків можна додати більше.

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

Є безліч інструментів, які допоможуть вам у цьому, деякі з них згадав Даниїл. Деякі інші:

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

Знову ж таки, це не вичерпний перелік, але те, що я тримаю в голові, щоб мене керувати, і, сподіваюся, це теж допоможе вам.


Що таке Марвін? Я не можу знайти посилання на нього, чи це друкарська помилка?
thelsdj

s / Marvin / Hudson / - спасибі за те, що помітили, що @thelsdj :-)
nearora

16

Відмова: Я один із розробників Puppet.

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

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

Такі інструменти, як шеф-кухар , лялька , сіль та CFEngine - все популярні інструменти для вирішення цієї другої потреби. Вони працюють в загальному напрямку перетворення адміністрування систем на центральне рішення, яке можна контролювати та тестувати версії.

Рух DevOps - ще одне джерело гарної інформації про те, як це зробити. Хоча заповідь - це краща співпраця між розробниками та персоналом операцій, вона також рухається в цьому ж напрямку.


15
Тепер ми знаємо, кого турбувати з нашими питаннями ляльок ...
ewwhite

1

У світі Windows ці проблеми навколо управління життєвим циклом додатків вирішуються в System Center 2012.

У System Center Manager Virtual Machine (SCVMM) послуги визначаються за допомогою "Шаблонів служб" (наприклад, класичний трирівневий сервіс), а середовища виконання визначаються як "Хмари" (наприклад, розробка, постановка, виробництво). Шаблони послуг можна переробляти та розгортати (автоматизовано) в різні Хмари. Під обкладинками SCVMM виконує роботу з надання, розгортання та налаштування віртуалізованого обладнання (VM тощо) та програмного забезпечення (ОС, компоненти додатків тощо).

Менеджер сервісних послуг System Center - це деталь, яка поєднує це разом з точки зору процесу. Наприклад, управління випуском та контроль змін.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.