Come posso gestire centinaia di BMC IPMI?


30

Ho oltre 200 computer in grado di fornire servizi IPMI . I server sono prodotti da diverse società (SuperMicro, Dell, ecc.) E ci sono 6-7 modelli BMC di circa 5 diversi fornitori e ogni modello ha le sue idiosincrasie.

Finora abbiamo configurato i BMC utilizzando una combinazione di DHCP e configurando manualmente ciascun BMC. La configurazione manuale potrebbe essere eseguita utilizzando un CD-ROM di avvio, la configurazione dal BIOS (se supportato), dal sistema operativo host con un'utilità come ipmitool , freeipmi , ecc. O in remoto utilizzando ipmitool se siamo in grado di determinare l'indirizzo di rete del dispositivo.

Tuttavia, questa configurazione manuale è piuttosto noiosa. In alcuni casi vogliamo cambiare un'impostazione a livello globale su tutti i BMC, il che richiede che un amministratore esegua un comando su dozzine di caselle. Poiché i BMC sono forniti da diversi fornitori e ogni modello di BMC potrebbe avere le proprie idiosincrasie, lo stesso comando non sempre funziona su tutti i BMC.

Ci sono utility che mi permettono di configurare in massa i BMC su dozzine di scatole? Supponiamo che io voglia interrogare un parametro su dozzine di BMC diversi, o cambiare la password, disabilitare l'accesso HTTP alla WebUI o disabilitare la famigerata falla di sicurezza zero della cifra .

Punti bonus per qualsiasi utility che mi consentirebbe di aggiornare il firmware BMC, che è necessario per mitigare diverse vulnerabilità di sicurezza


3
Questo sembra sicuramente qualcosa che potresti fare se fossi burattino / collettivo. Si utilizza facter , possibilmente con alcuni fatti su misura per rilevare il tipo di dispositivo che si possiede, quindi configurare le cose usando fantoccio, o premendo i comandi con mcollective.
Zoredache,

Potresti anche dare un'occhiata a xcat . Non è sofisticato come un pupazzo quando si tratta di gestione della configurazione, put ha una shell distribuita integrata, che può operare su gruppi e si integra perfettamente con IPMI.
Isaac,

Anche Puppet Razor potrebbe essere una soluzione, anche se non l'ho ancora esaminato: vdatacloud.com/blogs/2012/05/23/…
Stefan Lasiewski

Sono a Puppetconf e ho appena parlato con il project manager di Mcollective (altrimenti noto come Puppet Enterprise Orchestration). Of Mcollective gestisce i tuoi nodi (a livello di sistema operativo), quindi farlo funzionare a livello di IPMI sembra abbastanza lontano da quello per cui è stato progettato Mcollective. Ma è probabilmente possibile.
Stefan Lasiewski,

Risposte:


16

Probabilmente userei Ansible . È un motore di gestione / orchestrazione della configurazione molto semplice, molto più semplice da iniziare rispetto a Puppet (Puppet era la mia scelta preferita per questo, ma non sempre ora, avendo scoperto Ansible).

Il vantaggio di Ansible qui è che comunica direttamente su SSH, in modo da poter iniziare a utilizzare solo le credenziali e il flusso di lavoro SSH esistenti.

Se al momento stai configurando i tuoi BMC con ipmitool, potresti fare qualcosa del tipo:

Definisci un file Hosts - Questo dice ad Ansible su quali host sono nel gruppo bmc (in questo caso) e su cui eseguire roba.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

E così via ... Puoi anche usare nomi host in quel file, purché siano risolvibili.

Quindi creare un "playbook", che è l'insieme di comandi da eseguire su ciascun host in un gruppo host. Vuoi avere questo tipo di layout di directory top-down:

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

Un playbook ha ruoli , che sono piccole sezioni di configurazione che puoi scomporre e riutilizzare.

Quindi creerei un file chiamato bmc.yml(la configurazione di All Ansible è in file YAML)

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

Quindi all'interno roles/bmcconfig/tasks/main.ymlpuoi iniziare a elencare i comandi che devono essere eseguiti su ciascun host, per comunicare con ipmi.

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

Quando si esegue il playbook, con ansible-playbook -i hosts bmc.ymli comandi elencati tasks/main.ymlper ciascun ruolo verranno eseguiti in ordine dall'alto verso il basso su ciascun host trovato nel gruppo bmchost inhosts

group_vars/all è un file interessante, ti permette di definire coppie chiave-valore di variabili e valori che possono essere usati nei tuoi playbook.

così potresti definire qualcosa del genere

ipmitool_password: $512315Adb

nel tuo group_vars/alle, di conseguenza, potresti avere qualcosa del tipo:

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

nel playbook.

Puoi trovare ulteriori informazioni su come utilizzare i "moduli": i componenti di Ansible che ti consentono di fare cose, come scrivere il tuo: D e così via nelle pagine della documentazione di Ansible .


12

Ho scritto un piccolo strumento Python per eseguire i comandi sulle nostre 1000 macchine, (e sui loro bmc, drac, ilo e imm)

Quello che ho fatto è stato scrivere un framework Python chiamato vsc-manage dove posso eseguire i comandi che vengono inviati al server o bmc, e quindi configurato quale tipo di macchina necessita di quale comando.

Ho diverse classi che combinano un mix di questi comandi,

Quindi per le macchine con un imm sarà ssh su imm, e funzionerà power off(in un modo di tipo script atteso)

Per il nostro telaio con pala imb questo funzionerà sul telaio

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

Per alcuni dell dracs verrà eseguito questo sul sistema operativo (di un nodo principale)

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

Per i nostri sistemi HP più recenti che eseguono ipmi (e vedo sempre di più in questi giorni) eseguirà questo sul master:

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

o più recenti sistemi dell bisogno ipmitool -I open, potrebbe essere necessario giocare un po 'con il protocollo.

Per le impostazioni non incluse nello standard ipmi ho implementato alcune cose dal DMTF SMASH CLP , ad esempio accendendo il led di localizzazione:

start /system1/led1

Tutto questo in uno strumento da riga di comando che può essere eseguito dai nostri laptop, che si collegherà al nodo master giusto, eseguirà il comando giusto per il nodo giusto e restituirà l'output, con l'eventuale elenco aggiuntivo di errori (basato su output su stderr e / o exitcode)

Ciò si è rivelato molto utile e l'aggiunta del supporto per una nuova classe di hardware è relativamente semplice ora (grazie al fatto che la maggior parte dei fornitori supporta completamente ipmi e DMTFSMASHCLP ora)

Questo non è adatto per la configurazione iniziale (richiede che la bmc abbia un IP univoco e un gateway corretto, ma questo è ciò che i nostri fornitori devono fornirci alla consegna) ma può fare quasi tutto il resto (eseguire anche comandi arbitrari sull'host operativo sistema e pianificare automaticamente i tempi di inattività in icinga / nagios quando si riavvia un nodo e / o si riconoscono 1000 host e servizi contemporaneamente in icinga / nagios)

L'aggiornamento del firmware di bmc e l'aggiunta del supporto per i nostri switch sono problemi in sospeso pianificati.

AGGIORNARE

Dal momento che almeno alcune persone sembravano interessate, gli ho dato un ultimo smalto oggi, e aperto da questo su https://github.com/hpcugent/vsc-manage

Anche se questo è molto mirato al nostro flusso di lavoro (quattor e / o pbs) spero che almeno possa essere interessante.


Grazie per questo! C'è qualche vantaggio che il tuo lavoro ha rispetto a soluzioni consolidate come Ansible?
MikeyB,

Non avevo mai sentito prima Ansible, sicuramente lo esaminerò.
Jens Timmerman,

Per quanto lo vedo, Ansible non ha ancora supporto per impi e DMTF SMASH.
Jens Timmerman,

È interessante, Jens. Grazie per aver condiviso questo progetto. Ansible + vsc-manage inizia a sembrare davvero utile quando si tratta di server in massa.
ILIV,

ILIV, penso che sarebbe bello se avessi un po 'di tempo per aggiungere tutte le funzionalità di vsc-gestisci per rispondere ;-)
Jens Timmerman,

3

Sono sorpreso che nessuno abbia menzionato MAAS ( http://maas.io/ ), che fa esattamente quello che stai cercando. Può autoconfigurare e gestire i BMC e inoltre distribuire qualsiasi sistema operativo sui nodi che sono stati arruolati nel sistema. Ha un'interfaccia utente Web e un'API RESTful ed è progettato per integrarsi con qualsiasi sistema di automazione.

Quando una macchina PXE si avvia per la prima volta, MAAS utilizza IPMI in banda per impostare automaticamente le credenziali. Da quel momento in poi, puoi facilmente avviare e spegnere da remoto una macchina.

Per ulteriori dettagli, consultare la documentazione sui tipi di alimentazione BMC MAAS che mostra come configurare manualmente un BMC per qualsiasi nodo elencato in MAAS.


Un buon consiglio, grazie. Sembra piuttosto bello. Il MAAS di Ubuntu sembra fare un buon provisioning, gestione del ciclo di vita e sembra che abbia alcuni utili strumenti di gestione IPMI. Usiamo già The Foreman, che fa già parte di questo. Tuttavia, la gestione dell'IPMI di The Foreman è piuttosto debole e non fornisce raggruppamenti o strutture organizzative, ma almeno ha qualcosa. Lo usiamo in combinazione con una manciata di altri strumenti per gestire l'intero kit e il caboodle.
Stefan Lasiewski,

Si noti che Foreman ha supporto per organizzazioni e posizioni (vedi progetti.theforeman.org/projects/foreman/wiki/… ) a partire dalla versione 1.1. È possibile utilizzare queste funzionalità (insieme a gruppi di host) per fornire raccolte di host ragionevolmente granulari (anche gerarchiche con parametri o coppie chiave-valore).
mxmader,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.