如何管理数百个IPMI BMC?


30

我有200多台可以提供IPMI服务的计算机。这些服务器由数家不同的公司(SuperMicro,Dell等)制造,并且大约有5个不同的供应商提供6-7个BMC模型,每个模型都有其自己的特质。

到目前为止,我们已经通过组合使用DHCP和手动配置每个BMC来配置BMC。可以使用可引导CD-ROM,从BIOS(如果支持),使用ipmitoolfreeipmi等实用程序的主机操作系统进行配置,或者如果可以确定IP地址的远程地址,则可以使用ipmitool 进行手动配置。设备。

但是,这种手动配置非常繁琐。在某些情况下,我们希望全局更改所有BMC的设置,这要求管理员对数十个框运行命令。由于BMC由不同的供应商提供,并且每种BMC型号可能都有其自己的特质,因此同一命令并不总是适用于所有BMC。

是否有任何实用程序可让我在数十个盒子上批量配置BMC?假设我要在数十种不同的BMC上查询参数,或更改密码,禁用对WebUI的HTTP访问或禁用臭名昭著的密码零安全漏洞。

任何允许我更新BMC固件的实用程序的积分,这对于减轻多个安全漏洞是必不可少的


3
如果您要伪造/收藏,这肯定是您可以做的事情。您可以使用facter(可能带有一些自定义事实)来检测您拥有的设备类型,然后使用puppet或通过使用mcollective推送命令来配置设备。
Zoredache

您可能还想看看xcat。在配置管理方面,它不如木偶复杂,它集成了分布式外壳,可以在组上操作,并与IPMI紧密集成。
艾萨克(Isaac)2013年

木偶剃刀可能是一个解决办法还,虽然我还没有看过,但:vdatacloud.com/blogs/2012/05/23/...
斯特凡Lasiewski

我在Puppetconf,我刚刚与Mcollective(也称为Puppet Enterprise Orchestration)的项目经理交谈。Mcollective的(在OS级别)管理您的节点,然后使其在IPMI级别上工作似乎远远超出了Mcollective设计的目的。但这可能是可能的。
Stefan Lasiewski

Answers:


16

我可能会使用Ansible。这是一个非常简单的配置管理/编排引擎,比Puppet入门更简单(Puppet曾经是我的首选,但发现Ansible并不总是如此)。

Ansible在这里的好处是它直接通过SSH进行通信,因此您可以仅使用现有的SSH凭据和工作流程就可以开始使用。

如果当前正在使用ipmitool配置BMC,则可以执行以下操作:

定义一个主机文件-告诉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

剧本具有Roles,这些是配置的小部分,您可以细分并重复使用。

因此,我将创建一个名为bmc.yml(所有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文档页面上找到有关如何使用“模块”(可让您执行工作的Ansible组件,如何编写自己的:D等等)的更多信息


12

我已经编写了一个小型的python工具来在我们的1000台计算机上运行命令(以及它们的bmc,drac,ilo和imm)

我所做的是编写了一个称为vsc-manage的python框架,在其中可以运行发送到服务器或bmc的命令,然后配置哪种类型的计算机需要什么命令。

我有几个结合了这些命令的类,

因此,对于具有imm的机器,它将ssh到imm并运行power off(以一种期望脚本的方式)

对于我们的Imb刀片机箱,它将在机箱上运行

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

对于某些Dell Drac,它将在(主节点的)操作系统上运行

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

对于使用ipmi的较新的hp系统(我最近看到的越来越多),它将在主服务器上运行:

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和/或exitcode上输出)

事实证明,这非常方便,并且现在相对容易添加对新型硬件的支持(由于大多数供应商现在都完全支持ipmi和DMTFSMASHCLP,这一事实)

这不适合初始配置(它需要bmc具有唯一的ip和正确的网关,但这是我们的供应商在交付时需要提供给我们的东西),但是可以执行几乎所有其他操作(还可以在主机上运行任意命令系统,并在您重新启动节点时自动安排icinga / nagios的停机时间,并且/或者一次确认icinga / nagios的1000台主机和服务)

更新bmc固件并增加对我们的交换机的支持是计划中的未解决问题。

更新

由于至少有人似乎对此感兴趣,所以今天我给了它最后的润色,并在https://github.com/hpcugent/vsc-manage上开源了

尽管这非常针对我们自己的工作流程(quattor和/或pbs),但我希望至少它会很有趣。


谢谢你!与Ansible等已建立的解决方案相比,您的工作有什么优势吗?
MikeyB

我之前从未听说过Ansible,一定会调查一下。
詹斯·蒂默曼

据我所知,Ansible还不支持impi和DMTF SMASH。
Jens Timmerman

有趣,詹斯。感谢您分享这个项目。Ansible + vsc-manage在处理大量服务器时开始显得非常有用。
ILIV 2015年

ILIV,我想如果我有时间将vsc-manage的所有功能添加到ansible会很好;-)
Jens Timmerman

3

我很惊讶没有人提到MAAS(http://maas.io/),它确实可以满足您的需求。它可以自动配置和管理BMC,此外,还可以将任何OS部署到您已加入系统的节点上。它具有Web UI和RESTful API,并且旨在与任何自动化系统集成。

首次启动计算机PXE时,MAAS使用带内IPMI自动为您设置凭据。从那时起,您可以轻松地远程启动和关闭计算机。

有关更多详细信息,请查看MAAS BMC电源类型文档,该文档显示了如何为MAAS中列出的任何节点手动配置BMC。


一个很好的提示,谢谢。看起来很酷。Ubuntu的MAAS似乎可以很好地进行配置,生命周期管理,并且看起来它具有一些有用的IPMI管理工具。我们已经使用了The Foreman,它已经完成了一些工作。但是,工头的IPMI管理相当薄弱,它不提供分组或组织结构,但至少有一些东西。我们将其与其他一些工具结合使用,以管理整个套件和cabo​​odle。
Stefan Lasiewski '16

请注意,从v1.1开始,Foreman确实支持“ 组织和位置”(请参阅projects.theforeman.org/projects/foreman/wiki/…)。您可以使用这些功能(以及主机组)来提供合理的粒度(甚至具有参数或键-值对支持的层次结构)主机集合。
mxmader 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.