У меня более 200 компьютеров, которые могут предоставлять услуги IPMI . Серверы производятся несколькими разными компаниями (SuperMicro, Dell и т. Д.), И есть 6-7 моделей BMC от примерно 5 разных поставщиков, и каждая модель имеет свои особенности.
До сих пор мы настраивали BMC с помощью комбинации DHCP и вручную настраивали каждый BMC. Ручную настройку можно выполнить с помощью загрузочного компакт-диска, конфигурации из BIOS (если поддерживается), из операционной системы хоста с помощью таких утилит , как ipmitool , freeipmi и т. Д., Или удаленно, используя ipmitool, если мы можем определить сетевой адрес устройство.
Однако такая ручная настройка довольно утомительна. В некоторых случаях мы хотим изменить настройку глобально на всех контроллерах BMC, что требует, чтобы администратор запустил команду для десятков блоков. Поскольку BMC предоставляются разными поставщиками и каждая модель BMC может иметь свои собственные особенности, одна и та же команда не всегда работает на всех BMC.
Существуют ли какие-либо утилиты, которые позволяют мне массово настраивать BMC на десятках ящиков? Скажем, я хочу запросить параметр на десятках различных контроллеров BMC или изменить пароль, отключить доступ HTTP к WebUI или отключить пресловутую дыру в нулевом уровне безопасности.
Бонусные баллы за любую утилиту, которая позволила бы мне обновить прошивку BMC, что необходимо для устранения нескольких уязвимостей безопасности
источник
Ответы:
Я бы наверное использовал Ansible . Это очень простой механизм управления конфигурацией / оркестровки, с которым гораздо проще начать работу, чем с Puppet (раньше Puppet был моим выбором для этого, но не всегда сейчас, когда обнаруживал Ansible).
Преимущество Ansible здесь заключается в том, что он взаимодействует напрямую через SSH, поэтому вы сможете начать использовать только свои существующие учетные данные SSH и рабочий процесс.
Если вы сейчас настраиваете свои BMC с помощью ipmitool, вы сможете сделать что-то вроде:
Определить файл Hosts - сообщает Ansible, какие хосты входят в группу bmc (в данном случае) и на каких объектах запускать.
И так далее ... Вы также можете использовать имена хостов в этом файле, если они разрешимы.
Затем создайте «playbook», который представляет собой набор команд для запуска на каждом хосте в группе хостов. Вы хотите иметь такой вид сверху вниз каталога:
В Playbook есть роли , представляющие собой небольшие разделы конфигурации, которые можно разбить и использовать повторно.
Поэтому я бы создал файл с именем
bmc.yml
(All Ansible конфигурация находится в файлах YAML)Затем внутри
roles/bmcconfig/tasks/main.yml
вы можете начать перечислять команды, которые должны выполняться на каждом хосте, для связи с ipmi.Когда вы запускаете playbook,
ansible-playbook -i hosts bmc.yml
команды, перечисленныеtasks/main.yml
для каждой роли, будут выполняться в порядке сверху вниз на каждом хосте, найденном в группеbmc
хостов вhosts
group_vars/all
Это интересный файл, он позволяет вам определять пары ключ-значение переменных и значений, которые можно использовать в ваших книгах.чтобы вы могли определить что-то вроде
в вашем
group_vars/all
и в результате вы сможете получить что-то вроде:в пьесе.
Вы можете найти более подробную информацию о том, как использовать «модули» - компоненты Ansible, которые позволяют вам делать вещи, как писать свои собственные: D и так далее, на страницах документации Ansible .
источник
Я написал небольшой инструмент на python для запуска команд на наших 1000 машинах (и их bmc, drac, ilo и imm)
Что я сделал, так это написал python-framework под названием vsc-manage, где я могу запускать команды, которые либо отправляются на сервер, либо в bmc, а затем настраивать, какой тип машины нуждается в какой команде.
У меня есть несколько классов, которые сочетают в себе сочетание этих команд,
Так что для машин с imm он будет ssh к imm и запускается
power off
(в виде сценария ожидаемого сценария)Для нашего шасси imb blade оно будет работать на шасси
Для некоторых Dll Dracs он будет запускать это на ОС (главного узла)
Для наших новых систем hp, которые работают с ipmi (и я вижу все больше и больше в эти дни), он будет работать на главном:
или для более новых систем Dell
ipmitool -I open
вам может понадобиться немного поиграть с протоколом.Для настроек, не включенных в стандарт ipmi, я реализовал некоторые вещи из DMTF SMASH CLP , например, включив светодиод локатора:
Все это в инструменте командной строки, который можно запустить с наших ноутбуков, который подключится к нужному главному узлу, выполнит правильную команду для правого узла и вернет вывод с дополнительным списком ошибок, если таковые имеются (на основе вывод на stderr и / или код выхода)
Это оказалось очень удобным, и теперь добавить поддержку для нового класса оборудования довольно легко (благодаря тому факту, что большинство производителей полностью поддерживают ipmi и DMTFSMASHCLP сейчас)
Это не подходит для начальной конфигурации (для этого требуется, чтобы bmc имел уникальный ip и правильный шлюз, но это то, что наши поставщики должны предоставить нам при доставке), но может делать практически все остальное (также запускать произвольные команды на хосте, работающем). система и автоматически планировать время простоя в icinga / nagios при перезагрузке узла и / или одновременном подтверждении 1000 узлов и служб в icinga / nagios)
Обновление микропрограммы bmc и добавление поддержки для наших коммутаторов - это нерешенные вопросы, которые запланированы.
ОБНОВИТЬ
Так как, по крайней мере, некоторым людям это показалось интересным, я дал ему последний отпол сегодня и открыл его на https://github.com/hpcugent/vsc-manage.
Хотя это очень сильно нацелено на наш собственный рабочий процесс (quattor и / или pbs), я надеюсь, что это, по крайней мере, может быть интересным.
источник
Я удивлен, что никто не упомянул MAAS ( http://maas.io/ ), который делает именно то, что вы ищете. Он может автоматически конфигурировать BMC и управлять ими, а также развертывать любую ОС на узлах, которые вы включили в систему. Он имеет веб-интерфейс и RESTful API и предназначен для интеграции с любой системой автоматизации.
Когда машина загружается PXE в первый раз, MAAS использует встроенный IPMI для автоматической настройки учетных данных. С этого момента вы можете легко удаленно загрузить и выключить компьютер.
Для получения дополнительной информации обратитесь к документации MAAS BMC Power Types, в которой показано, как вручную настроить BMC для любого узла, включенного в MAAS.
источник