Як я можу керувати сотнями ІМП BMC?


30

У мене понад 200 комп'ютерів, які можуть надавати послуги IPMI . Сервери випускаються декількома різними компаніями (SuperMicro, Dell тощо), і є 6-7 моделей BMC від приблизно 5 різних постачальників, і кожна модель має свої власні ідіосинкразії.

Поки ми налаштовували BMC за допомогою комбінації DHCP та вручну налаштовуючи кожен BMC. Конфігурація вручну може бути виконана за допомогою завантажувального компакт-диска, конфігурація з BIOS (якщо підтримується), з операційної системи хоста з утилітою, наприклад ipmitool , freeipmi тощо, або віддалено за допомогою ipmitool, якщо ми можемо визначити мережеву адресу пристрій.

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

Чи є утиліти, які дозволяють мені масово налаштувати BMC на десятках коробок? Скажіть, що я хочу запитувати параметр на десятках різних BMC або змінити пароль, вимкнути HTTP-доступ до WebUI або відключити сумнозвісний шифр нульовий отвір безпеки.

Бонусні бали за будь-яку утиліту, яка дозволить мені оновити прошивку BMC, яка необхідна для зменшення кількох вразливих місць безпеки.


3
Це впевнено здається чимось, що ти міг би зробити, якщо б ти маріонетка / колектив Ви використовуєте facter , можливо, за допомогою деяких спеціальних фактів, щоб виявити, який тип пристрою у вас є, потім ви налаштовуєте речі за допомогою маріонетки або натисканням команд з mcollective.
Zoredache

Ви також можете поглянути на xcat . Він не такий складний, як ляльковий, коли справа доходить до управління конфігурацією, put має інтегровану розподілену оболонку, яка може працювати на групи та тісно інтегрується з IPMI.
Ісаак

Лялечна бритва може бути також рішенням, хоча я ще не розглядав її: vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

Я в Puppetconf, і я щойно поговорив з менеджером проектів для Mcollective (інакше відомий як Orchestration Puppet Enterprise). Компанія Mcollective керує своїми вузлами (на рівні ОС), а потім налагодити цю роботу на рівні IPMI здається далеко поза межами того, для чого був розроблений Mcollective. Але це, мабуть, можливо.
Стефан Ласєвський

Відповіді:


16

Я, мабуть, використовував Ansible . Це дуже простий двигун управління конфігурацією / оркестрацією, який набагато простіше розпочати, ніж Ляльковий (Маріонетка раніше була моїм вибором для цього, але не завжди, виявивши Ansible).

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

Якщо ви зараз налаштовуєте свої BMC за допомогою ipmitool, ви зможете зробити щось на кшталт:

Визначення файлу хостів - це вказує на Ansible, які хости є у групі bmc (у даному випадку) та на яких запускати речі.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

І так далі ... Ви також можете використовувати імена хостів у цьому файлі, якщо вони вирішуються.

Потім створіть «ігрову книжку», що представляє собою набір команд, які потрібно виконати на кожному хості в групі хостів. Ви хочете мати такий вид компонування зверху вниз:

ansible/
   playbooks/
      bmc.yml
      roles/
        bmcconfig/
           files/
           handlers/
             main.yml
           tasks/
             main.yml
           templates/
   group_vars/
      all

У ігровій книзі є ролі , які є невеликими розділами конфігурації, які ви можете зламати та використовувати повторно.

Тож я б створив файл під назвою bmc.yml(конфігурація All Ansible - у файлах YAML)

---
- name: Configure BMC on the hosts
  hosts: bmc
  user: root
  roles: 
    - bmcconfig

Тоді всередині roles/bmcconfig/tasks/main.ymlви можете почати перераховувати команди, які потрібно виконати на кожному хості, щоб спілкуватися з ipmi.

---
  - name: Install ipmitool
    apt: pkg=ipmitool state=installed
  - name: Run ipmitool config
    shell: ipmitool -your -options -go -here

Під час запуску ігрової книги ansible-playbook -i hosts bmc.ymlкоманди, перелічені в tasks/main.ymlкожній ролі, виконуватимуться в порядку "зверху вниз" на кожному хості, знайденому в групі bmcхостів уhosts

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

щоб ви могли визначити щось на кшталт

ipmitool_password: $512315Adb

у вашому group_vars/allрезультаті, ви зможете мати щось на зразок:

shell: ipmitool -your -options -go -here --password=${ipmitool_password}

в ігровій книжці.

Ви можете дізнатися більше інформації про те, як використовувати "модулі" - компоненти Ansible, які дозволяють вам робити речі, як писати свої власні: D тощо, на Сторінках документації з відповідними документами .


12

Я написав невеликий інструмент python для запуску команд на наших 1000 машинах (і їхніх BMC, Drac, Ilo і Im's)

Те, що я зробив, - це написати python-фреймворк під назвою vsc-management, де я можу запускати команди, що надсилаються на сервер, або в bmc, а потім налаштовувати, який тип машини потребує, яку команду.

У мене є кілька класів, які поєднують поєднання цих команд,

Так що для машин з імунітетом він збиватиметься з імунітетом і запуститься power off(таким чином, як очікується, сценарій)

Для нашої шасі imb blade це буде працювати це на шасі

power -%(command)s -T system:blade[%(blade)s]

Для деяких dell dracs це запустить це на os (головного вузла)

idracadm -r %(hostname)s -u root -p '%(password)s' serveraction %(command)s

Для наших нових систем HP, які роблять ipmi (і я бачу все більше і більше в ці дні), це запустить це на майстер:

ipmitool -I lanplus -H %(hostname)s -U %(user)s -P '%(password)s' chassis power %(command)s

або потрібні новіші системи Dell ipmitool -I open, можливо, вам доведеться трохи пограти з протоколом.

Для налаштувань, що не входять до стандарту ipmi, я реалізував деякі речі з DMTF SMASH CLP , наприклад, увімкнувши локатор, ведений на:

start /system1/led1

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

Це виявилося дуже зручним, і додати підтримку нового класу обладнання зараз досить просто (Завдяки тому, що більшість постачальників повністю підтримують ipmi та DMTFSMASHCLP)

Це не підходить для початкової конфігурації (йому потрібно, щоб bmc мав унікальний ip та правильний шлюз, але це те, що нам потрібно надати постачальникам при доставці), але може робити майже все інше (також виконувати довільні команди на хості, що працює система і автоматично планувати час простою в icinga / nagios, коли ви перезавантажуєте вузол та / або підтверджуєте 1000 хостів і служб в icinga / nagios відразу)

Оновлення програмного забезпечення bmc та додавання підтримки для наших комутаторів - це невирішені проблеми, які плануються.

ОНОВЛЕННЯ

Оскільки принаймні деяким людям здавалося, що я зацікавлений, я сьогодні дав йому останню польську форму та відкрив це на https://github.com/hpcugent/vsc-manage

Хоча це дуже орієнтоване на наш власний робочий процес (кваттор та / або Pbs), я сподіваюся, що це принаймні може бути цікавим.


Дякую за це! Чи є якась перевага вашої роботи над усталеними рішеннями, такими як Ansible?
MikeyB

Я ніколи не чув від Ansible раніше, обов'язково загляну в це.
Йенс Тіммерман

Наскільки я бачу, Ansible ще не підтримує імпі та DMTF SMASH.
Йенс Тіммерман

Цікаво, Єнс. Дякуємо, що поділилися цим проектом. Ansible + vsc-management починає виглядати дуже корисно в масовій роботі з серверами.
ІЛІВ

ILIV, я думаю, було б непогано, якби я мав трохи часу додати всі функції vsc-management до ansible ;-)
Jens Timmerman

3

Я здивований, що ніхто не згадав MAAS ( http://maas.io/ ), який робить саме те, що ви шукаєте. Він може автоконфігурувати та керувати BMC, а також додатково розгорнути будь-яку ОС на вузлах, до яких ви зараховані до системи. Він має веб-інтерфейс і API RESTful і призначений для інтеграції з будь-якою системою автоматизації.

Коли машина PXE завантажується вперше, MAAS використовує внутрішньодіапазонний IPMI для автоматичного налаштування облікових даних для вас. З цього моменту ви можете легко віддалено завантажувати та вимикати машину.

Для отримання більш детальної інформації перегляньте документацію MAAS BMC Power Types, яка показує, як вручну налаштувати BMC для будь-якого вузла, занесеного до MAAS.


Гарна порада, дякую. Виглядає досить круто. Здається, MAAS Ubuntu має гарне забезпечення, управління життєвим циклом і, схоже, має корисні засоби управління IPMI. Ми вже використовуємо The Foreman, який вже робить щось із цього. Однак управління IPMI Foreman є досить слабким, воно не забезпечує групування чи організаційну структуру, але принаймні щось має. Ми використовуємо це в поєднанні з кількома іншими інструментами для управління цілим комплектом та кабулею.
Стефан Ласевський

Зауважте, що у Foreman є підтримка організацій та місцеположень (див. Підтримку в проектах : theforeman.org/projects/foreman/wiki/…) станом на v1.1. Ви можете використовувати ці функції (поряд із групами хостів) для забезпечення достатньо деталізованих (навіть ієрархічних із підтримкою пара параметрів або ключових значень) хостів.
mxmader
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.