Linux Масове / віддалене адміністрування


10

Окрім внутрішньої ІТ-інфраструктури, у нас є близько 500 машин Linux, які розміщують наші сервіси для он-лайн світу. Вони згруповані у купу кластерів, таких як Database An, Product An, NFS, Backoffice тощо. Крім того, ними управляє зовнішній постачальник, відповідно до наших специфікацій та вимог.

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

Таким чином, я намагався створити віртуальні машини, скопіював різні живі системи максимально точно і підготував їх до підключення, наприклад, до баз даних розробки, а не до "справжніх", прозоро для розробників (вони не є root). Це працює досить добре, але ...

Мені було цікаво, як можна адмініструвати ці системи віддалено і масово ? Чи є якась сім'я програмного забезпечення, про яку я не знаю? Або, принаймні, з якими прийомами чи принципами, з якими слід ознайомитися?

Ми надамо кожному розробнику купу зображень для локального запуску (VirtualBox). Відділ QA отримають віртуальні кластери (XEN або Hyper-V). Якщо мені потрібно надати додатковий серверний модуль, перенаправити нове підключення до бази даних або просто хочу оновити все, що надається менеджером пакунків ... як я можу це зробити, не примушуючись входити в кожну систему та / або попросити моїх колег завантажити та запустити якийсь сценарій кріплення?

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

Для запису:

  • Майже у всіх системах працює Debian GNU / Linux 6.x "стискати"
  • Жоден розробник не змушений використовувати певну ОС на своїй робочій станції
  • Бюджет, звичайно, обмежений, але не надто малий, щоб придбати фірмове програмне забезпечення
  • Кращим є рішення, яке б передбачало нашого вищевказаного постачальника

Відповіді:


15

Це залежить від того, що саме вам потрібно і що ви шукаєте. Але в цілому існує декілька рішень для " керування конфігурацією, наприклад:

  1. ляльковий
  2. шеф-кухар
  3. cfengine
  4. відповідальний
  5. сіль

і т. д. Я особисто рекомендував би лялькових, оскільки це велика спільнота та безліч зовнішніх рецептів. Це дозволяє автоматично налаштувати та керувати системами. Якщо ви поєднаєте це з власними сховищами та автоматизованими оновленнями, наприклад, unattended-upgradesви можете автоматично оновити систему.

Іншим рішенням є лише надання власних пакетів, таких як company-baseтощо, які автоматично залежать від необхідного програмного забезпечення та можуть налаштувати вашу систему автоматично.

Ви також повинні вивчити автоматизовані розгортання (босоніжка та віртуалізація). Якщо ви поєднаєте це з керуванням конфігурацією або власним сховищем, ви можете легко автоматизувати та перевстановити ваші системи. Якщо ви хочете розпочати роботу з автоматизованою установкою, подивіться на theforman, який підтримує лібвірт , а також установки з голими кістками і має інтегровану лялькову підтримку. Якщо ви хочете зробити це самостійно, ви можете заглянути в kickstart (redhat et al.) Або "попередня підготовка", щоб автоматично налаштувати вашу систему. Для Debian ви також можете використовувати щось на зразок debootstrap або обгортку з назвою grml-debootstrap, що підтримує віртуалізовані зображення.

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

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

Для Google ключові слова шукати в devops, configuration management, it automationта server orchestration.

Коротше кажучи, максимально автоматизуйте і навіть не замислюйтесь про те, щоб робити речі вручну.


1
Дякую! Це багато чого для прочитання, але виглядає досить перспективно.
mjhennig

@mjhennig Я просто додав ще трохи інформації. розгортання. Є багато ресурсів, але найголовніше, що ви не повинні робити речі самостійно через ssh / розподілені оболонки, але мати якусь систему для цього.
Ульріх Дангель

2
Немає нічого поганого в тому, щоб робити речі самостійно, особливо якщо наявні інструменти не відповідають призначенню. Такі системи, як Лялька, самі по собі є інструментами системного адміністрування, а не управлінням конфігурацією. Значна більшість систем, які я використовую, навіть не доступні з центрального сервера, але з ноутбуків користувачів через (у всьому) vpn - намагаються змінити це протягом трьох років. Наш ІТ-відділ розділений за регіонами, оскільки кожен регіон не може отримати належний доступ до іншого. Домашні сценарії необхідні в деяких ситуаціях. Ось тут і починаються інновації.
Арседж

3
@Arcege Я просто підтримав ваш коментар, необхідні сценарії, і вам не потрібно одразу перетворювати всю вашу інфраструктуру. Найважливіша частина - це автоматизувати речі та зробити їх повторюваними. Але описовий характер лялькових та шеф-кухарів має деякі унікальні аспекти, наприклад, ви можете перевірити і перевірити лялькові заняття cucumber-puppet. Звичайно, ви можете розробити / розробити свій власний фреймворк, використовуючи існуючі компоненти, але це звучало, що OP зараз нічого не має на місці, і якщо ви почнете з нуля, я думаю, що найкраще використовувати існуючу структуру.
Ульріх Дангель

Так, я погоджуюся з автоматизованими / повторюваними операціями. У мене є ряд автоматизованих сценаріїв або домашніх скриптів для інтерфейсу між існуючими системами, такими як Jenkins / Oc4j та інтеграція Subversion / Bugzilla. Я просто не погодився (сильно) з вашим коментарем "ви не повинні насправді робити речі самостійно". Іноді існуючі рамки не застосовуються, як у моїй ситуації, яку я описав.
Арседж

3

Ульріх вже дав відповідь щодо розгортання програмного забезпечення та автоматизованої настройки сервера.

Принципи цього стоять

  • Визначте, як повинні виглядати ваші сервери - це включає загальне програмне забезпечення, яке встановлено за замовчуванням, схему розділів та макет файлової системи
  • Сервери виробництва, постановки, тестування та розробки не повинні відрізнятися щодо цих основних стандартів (інакше ви зіткнетеся з проблемами пізніше - як і раніше)
  • Використовуйте належне управління змінами, щоб документувати ВСІ зміни, які ви зробили (включаючи невеликі зміни в одній лінії в будь-якій конфігурації)
  • Завжди ви змінюєте спочатку тест, потім розвиток, потім етап та останній час виробництва

Ви попросили зручний інструмент для управління масою серверів - мій особистий фаворит - cluster-ssh ( cssh). Введіть один раз і зробіть зміни на багатьох серверах одночасно.

Якщо ви виявите проблему та маєте виправлення для її усунення:

  1. Застосуйте виправлення до Test / Dev / Staging / Prod (див. Вище), якщо воно справді працює
  2. Застосуйте виправлення до своїх віртуальних шаблонів, щоб майбутні VM-клони не мали цієї помилки
  3. Застосуйте виправлення до фізичного процесу встановлення (kickstart / autoyast / будь-який інший)
  4. Застосуйте виправлення до ВСІХ серверів

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

Для цього ми використовуємо Mantis (відкритий код, PHP).


2

Я управляю приблизно 30 продуктами та кількома сотнями серверів у різних країнах. Я менеджер конфігурації програмного забезпечення, тому не маю кореневого доступу (за дизайном), не торкаюся баз даних або їх серверів (знову ж таки, за дизайном) і мушу стрибати безліч обручів через корпоративну безпеку. Але я керую конфігураціями тестування, постановки та виробництва, включаючи посилання на бази даних та зміни. У мене є кілька сценаріїв , які виходять до серверів з допомогою комбінацій ssh, pythonі сценаріїв оболонки.

Основні речі, про які варто подумати:

  1. Які взаємодії ви збираєтеся мати зі своїми серверами? Просто завантаження файлів? Запуск програм командного рядка? Запуск віддалених клієнтів X?
  2. Який рівень безпеки потрібен для доступу до цих серверів? Брандмауери, захищені мережі, vpn? Чи sshдостатньо і з центрального безпечного місця?
  3. Скільки можна автоматизувати на кожному сервері? Чи можете ви встановити програму на кожному сервері та запустити її, чи вам потрібно передавати програму через щось на зразок sshзапуску віддалено? Чи можете ви його сценарій за допомогою expectвиклику командного рядка чи просто?

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


2
Лише невелика пропозиція повторно. virtualbox, погляньте на vagrantup.com, це може спростити та автоматизувати створення віртуальних зображень.
Ульріх Дангель

На жаль, навіть отримати простий доступ до мережі між віддаленими тестовими середовищами майже неможливо. Створити ферму віртуальної скриньки було б ще важче. У мене виникають проблеми просто з проханням ІТ оновити стандартне програмне забезпечення з тим, що застаріло більше, ніж рік, тому що воно не входить у "стандартні сховища RedHat".
Арседж

Що допомогло моєму досвіду застарілого програмного забезпечення wrt - це показати, що це програмне забезпечення або EOL, або є проблеми із безпекою. Налаштування / підключення до мережі часто досягається набагато складніше, можливо, спробуйте підкреслити, як підключення різних тестових середовищ допомагає заощадити гроші, спростити процеси, заощадити час QA або зробити тестове середовище більш реалістичним. Це також може допомогти, якщо ви знайдете людей з різних галузей на борту.
Ульріх Дангель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.