Автоматизація розгортання сервера


28

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

Сервери, які я розгорнув до цих пір, були лише Ubuntu, але можливо, що я почну використовувати інші ОС Linux або навіть Windows. Поки я дивився на Capistrano, але, схоже, він зосереджений на написанні маленьких рубінових програм, щоб виконувати цю роботу, і я взагалі не маю знань


Відповіді:


20

Ляльковий звучить ідеально для того, що ви намагаєтесь зробити, зауваживши, що на даний момент немає підтримки для Windows.

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

Лялька є декларативною - вона дозволяє описувати свої скриньки з точки зору ресурсів, які має мати кожен ящик. Отже, якщо ви хочете ssh- ви пишете клас для цього ресурсу - і всередині класу ви можете включити логіку про те, як ssh називається дещо іншим у FreeBSD проти Ubuntu. Він також знає використовувати yumвсередині Redhat і apt-getвсередині Debian, заснованих на дистрибутивах, і portsв BSD. Тепер у вашому серверному вузлі у вас просто буде така лінія include ssh- і маріонетка зробить правильно, і поставить SSH на машину, не будучи вам пам'ятати, чи це Ubuntu, або Redhat або FreeBSD.

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

Зараз я керую лише трьома полями за допомогою Лялечки - але це вже окупилося. Провівши тиждень на налаштування поля, яке ми будемо використовувати для подання стимулів в експерименті, виявилося, що драйвер відеокарти був занадто старим у версії Ubuntu, яку я поставив на ньому (8.04). Мені довелося встановити останню версію Ubuntu (9.04), але після цього мені просто довелося влучити і запустити ляльку - і все, що я витратив на налаштування тижня, було відновлено.

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

Нарешті, ось коротке відео, яке робить просту маріонеткову демонстрацію, яка мене швидко почала.


3
Digg.com використовує маріонетку для управління своїми серверами, деякі основні приклади можна знайти на їхньому блозі: blog.digg.com/?p=335 blog.digg.com/?p=562
Адам Гіббінс

Я вважаю, що адміністративна команда Fedora також використовує маріонетки.
Май

9

Ми використовуємо Cobbler та Puppet для автоматизації побудови та конфігурації реальних та віртуальних машин.

Художник з'єднує DHCP, PXE завантаження та Kickstart, щоб зробити розгортання не що інше, як додавання машинного профілю та натискання кнопки живлення. Для віртуальних машин koan команда виконує (у нашому випадку) Xen магію, щоб розпочати інсталяцію - dom0я просто введіть:

koan --system vps.fqdn --server cobbler --no-gfx

потім virsh consoleпереглядати будівлю VPS без будь-якої взаємодії.

Ми використовуємо RHEL і маємо безліч профілів, налаштованих на диски розділів, налаштовуємо мережу та встановлюємо базові пакети для різних класів серверів. Cobbler підтримує породи Debian і Ubuntu, але я ніколи цього не пробував. Убік: інші цікаві можливості для Cobbler включають запущені ISO- файли з найменшими стандартами та оновлення програмного забезпечення HP .

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

Лялька справді приголомшлива. Вам не потрібно, щоб кожен аспект вашої конфігурації був під її контролем - почніть з того, щоб він управляв чимось простим, яке вам потрібно налаштувати у кожному вікні ( sudoersце канонічний приклад) і взяти його звідти. Переконайтесь, що ваші лялькові маніфести також є версійними; нічого кращого, ніж легко вміти відкочуватися до відомої конфігурації, не пам'ятаючи, що налаштувати.


6

Де я зараз працюю, нам належить керувати частиною Linux нашої ферми серверів, яка становить трохи більше 300 серверів Linux. Сюди в основному входять HP Proliants, а потім IBM 3850, деякі леза IBM, VMware ESX, а також KVM для наших внутрішніх серверів управління.

качан

Ми подивилися на шобника, але проблема була в тому, що шобер дуже специфічний для RHEL / Red Hat. Нам потрібно підтримувати RHEL та SLES як мінімум, а Ubuntu - наступний.

ляльковий

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

гарячий провід

Hotwire - це те, що ми використовуємо (розроблено всередині країни, але є відкритим кодом), і робимо це протягом останніх кількох років. По-перше, інвентаризуються системи, які планується побудувати, що означає інвентаризацію центру обробки даних, стійки, апаратного забезпечення, операційної системи, мережі тощо, а по-друге, виконувати швидку збірку та розгортання. Після того як система побудована, автоінвентаризація hotwire підтримує інвентаризацію синхронізовано, а cfengine підтримує їх. Hotwire знає про апаратне забезпечення сервера, розмовляючи з даними SMBIOS / DMI в Біосі через python-dmidecode .

Бонусними балами є те, що він поєднує процес інвентаризації та збирання в одне ціле, тому керувати ними менше, а функція інвентаризації в реальному часі чудова, як ми знаємо, якщо щось не зовсім правильно.

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

cfengine

Ми використовуємо cfengine тому, що крім нього, а також маріонетки, нічого іншого немає. Насправді це хороший інструмент, але «хороший» лише як функція того, наскільки хороша ваша політика - якщо ви встановлюєте небезпечну політику, то невелика помилка може спричинити багато збитків. Наприклад, за політикою ми не «модифікуємо» файли, ми або замінюємо їх, або не робимо. Крім того, всі замінені файли мають заголовок, завдяки якому будь-яка особа, яка її редагує, знає, що вона буде замінена наступного разу (вона запускається через cron щогодини).

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


Ви вирішили проти Лялечки, бо це залежить від Рубі? Виходячи з цього, ви можете вирішити майже що завгодно, оскільки оновлення libc або ядра може порушити його.
Крістіан Ciupitu

2
Ви дійсно піднімаєте крапку, але врешті-решт, це компроміс - скільки пакетів я хочу "турбуватися" про наступне оновлення. Якщо оновлення ядра / glibc піде не так - ви, як правило, очікуєте, що це дізнаєтесь майже одразу, оскільки це найважливіший компонент ОС, однак, якщо Ruby вийде трохи іншим, ви насправді не помітите, але коли це зробите, ви можете вже оновлено 300 серверів та працює на цій версії, і тепер Puppet є жертвою. Але знову ж таки, я нічого не вирізаю з каменю; це лише моя перевага в цьому питанні.
Ксеркс

5

Я мав успіх з Лялькою . Шеф-кухар - новий. Більш довгий список опцій та діаграму порівняння див. У статті Вікіпедії, Порівняння програмного забезпечення для керування конфігурацією з відкритим кодом .


1
Не забувайте, що Opscode забезпечує здоровий набір готових до використання шеф-кухарів.
jtimberman

3

Для автоматизації установки залежно від цільової системи:

  • Debian / Ubuntu: FAI або попереднє попереднє встановлення
  • RedHat / Fedora: Kickstart
  • Novell / openSuSE: AutoYaST
  • Solaris: Jumpstart
  • Windows: unattended.sourceforge.net

Для управління конфігурацією я б запропонував використовувати лялечку.



2

Ще один голос за Лялечку тут. Ми широко використовуємо його для виконання всіх установок та управління конфігурацією сервера та додатків. 200+ вузлів і підрахунок. Підтримка Windows, очевидно, в розробці, хоча в якому стані я не впевнений.

Ми все ще дивимося на початкову сторону завантажувальної системи ОС, але, як згадувалося вище, Cobbler виглядає цікаво. Зараз ми використовуємо суміш завантаження PXE з попередньою попередньою програмою Debian / Ubuntu, але це навряд чи оптимально.


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