Tengo más de 200 computadoras que pueden proporcionar servicios de IPMI . Los servidores son fabricados por varias compañías diferentes (SuperMicro, Dell, etc.), y hay 6-7 modelos BMC de aproximadamente 5 proveedores diferentes, y cada modelo tiene sus propias idiosincrasias.
Hasta ahora hemos estado configurando los BMC utilizando una combinación de DHCP y configurando manualmente cada BMC. La configuración manual se puede hacer usando un CD-ROM de arranque, configuración desde el BIOS (si es compatible), desde el sistema operativo host con una utilidad como ipmitool , freeipmi , etc. o remotamente usando ipmitool si podemos determinar la dirección de red del dispositivo.
Sin embargo, esta configuración manual es bastante tediosa. En algunos casos, queremos cambiar una configuración global en todos los BMC, lo que requiere que un administrador ejecute un comando contra docenas de cuadros. Dado que los BMC son proporcionados por diferentes proveedores y cada modelo de BMC puede tener sus propias idiosincrasias, el mismo comando no siempre funciona en todos los BMC.
¿Hay alguna utilidad que me permita configurar en masa los BMC en docenas de cajas? Digamos que quiero consultar un parámetro en docenas de BMC diferentes, o cambiar la contraseña, desactivar el acceso HTTP a la WebUI o desactivar el infame agujero de seguridad de cifrado cero .
Puntos de bonificación para cualquier utilidad que me permita actualizar el firmware de BMC, que es necesario para mitigar varias vulnerabilidades de seguridad
fuente
Respuestas:
Probablemente usaría Ansible . Es un motor de gestión / orquestación de configuración muy simple que es mucho más sencillo de comenzar que Puppet (Puppet solía ser mi opción preferida para esto, pero no siempre ahora, después de haber descubierto Ansible).
El beneficio de Ansible aquí es que se comunica directamente a través de SSH, por lo que podrá comenzar a usar solo sus credenciales y flujo de trabajo de SSH existentes.
Si actualmente está configurando sus BMC con ipmitool, podría hacer algo como:
Definir un archivo Hosts: esto le dice a Ansible qué hosts están en el grupo bmc (en este caso) y en qué ejecutar cosas.
Y así sucesivamente ... También puede usar nombres de host en ese archivo, siempre que sean resolubles.
Luego, cree un "libro de jugadas", que es el conjunto de comandos para ejecutar en cada host en un grupo de host. Desea tener este tipo de diseño de directorio de arriba hacia abajo:
Un libro de jugadas tiene Roles , que son pequeñas secciones de configuración que puede desglosar y reutilizar.
Así que crearía un archivo llamado
bmc.yml
(La configuración de todos los Ansible está en archivos YAML)Luego
roles/bmcconfig/tasks/main.yml
, puede comenzar a enumerar los comandos que se ejecutarán en cada host para comunicarse con ipmi.Cuando ejecuta el libro de jugadas,
ansible-playbook -i hosts bmc.yml
los comandos enumeradostasks/main.yml
para cada rol se ejecutarán en orden descendente en cada host que se encuentre en el grupo debmc
host enhosts
group_vars/all
es un archivo interesante, le permite definir pares clave-valor de variables y valores que pueden usarse en sus libros de jugadas.para que puedas definir algo como
en su
group_vars/all
y como resultado, podría tener algo como:en el libro de jugadas.
Puede encontrar más información sobre cómo usar los "módulos": los componentes de Ansible que le permiten hacer cosas, cómo escribir su propio: D, etc. en las páginas de documentación de Ansible .
fuente
He escrito una pequeña herramienta de Python para ejecutar comandos en nuestras 1000 máquinas (y sus bmc, drac, ilo e imm)
Lo que hice fue escribir un python-framework llamado vsc-manage donde puedo ejecutar comandos que se envían al servidor o al bmc, y luego configuré qué tipo de máquina necesita qué comando.
Tengo varias clases que combinan una combinación de estos comandos,
Entonces, para máquinas con un imm, se enviará al imm y se ejecutará
power off
(de una manera esperada)Para nuestros chasis imb blade , se ejecutará esto en el chasis
Para algunos dell dracs , ejecutará esto en el sistema operativo (de un nodo maestro)
Para nuestros sistemas HP más nuevos que hacen ipmi (y veo más y más en estos días) lo ejecutará en el maestro:
o los nuevos sistemas Dell necesitan
ipmitool -I open
, es posible que deba jugar un poco con el protocoloPara configuraciones no incluidas en el estándar ipmi, he implementado algunas cosas del DMTF SMASH CLP , por ejemplo, encender el led localizador:
Todo esto en una herramienta de línea de comandos que se puede ejecutar desde nuestras computadoras portátiles, que se conectará al nodo maestro correcto, ejecutará el comando correcto para el nodo correcto y devolverá la salida, con una lista adicional de errores si los hay (según salida en stderr y / o código de salida)
Esto ha demostrado ser muy útil, y agregar soporte para una nueva clase de hardware ahora es relativamente fácil (gracias al hecho de que la mayoría de los proveedores sí admiten totalmente ipmi y DMTFSMASHCLP ahora)
Esto no es adecuado para la configuración inicial (necesita que el bmc tenga una IP única y una puerta de enlace correcta, pero esto es lo que nuestros proveedores deben proporcionarnos en el momento de la entrega) pero puede hacer casi cualquier otra cosa (también ejecutar comandos arbitrarios en el host que opera sistema y programar automáticamente el tiempo de inactividad en icinga / nagios cuando reinicia un nodo, y / o reconocer 1000 hosts y servicios en icinga / nagios a la vez)
Actualizar el firmware de bmc y agregar soporte para nuestros conmutadores son problemas pendientes que están planificados.
ACTUALIZAR
Dado que al menos algunas personas parecían interesadas, le he dado un último esmalte hoy y lo he encontrado en https://github.com/hpcugent/vsc-manage
Si bien esto está muy dirigido a nuestro propio flujo de trabajo (quattor y / o pbs), espero que al menos pueda ser interesante.
fuente
Me sorprende que nadie haya mencionado MAAS ( http://maas.io/ ), que hace exactamente lo que estás buscando. Puede autoconfigurar y administrar BMC y, además, implementar cualquier sistema operativo en los nodos que ha alistado en el sistema. Tiene una interfaz de usuario web y una API RESTful, y está diseñada para integrarse con cualquier sistema de automatización.
Cuando una máquina PXE arranca por primera vez, MAAS usa IPMI en banda para configurar las credenciales automáticamente. A partir de ese momento, puede arrancar y apagar una máquina fácilmente de forma remota.
Para obtener más detalles, consulte la documentación de Tipos de energía BMC de MAAS que muestra cómo configurar manualmente un BMC para cualquier nodo alistado en MAAS.
fuente