web-dev-qa-db-fra.com

Comment puis-je gérer des centaines de BMC IPMI?

J'ai plus de 200 ordinateurs qui peuvent fournir [~ # ~] ipmi [~ # ~ ~] Services. Les serveurs sont fabriqués par plusieurs sociétés différentes (Supermicro, Dell, etc.), et il y a 6 à 7 modèles BMC d'environ 5 fournisseurs différents, et chaque modèle a ses propres idiosyncrasies.

Jusqu'à présent, nous avons configuré les BMCs en utilisant une combinaison de DHCP et configurez manuellement chaque BMC. La configuration manuelle peut être effectuée à l'aide d'un CD-ROM amorçable, de la configuration du BIOS (si supporté), du système d'exploitation hôte avec un utilitaire tel que ipmitool , FreeIPMI , etc. . Ou à distance en utilisant IPMITOOL si nous pouvons déterminer l'adresse réseau de l'appareil.

Cependant, cette configuration manuelle est plutôt fastidieuse. Dans certains cas, nous voulons modifier un paramètre globalement sur tous les BMC, ce qui nécessite qu'un administrateur exécute une commande contre des dizaines de boîtes. Étant donné que les BMC sont fournis par différents fournisseurs et que chaque modèle de BMC pourrait avoir ses propres idiosyncrasies, la même commande ne fonctionne pas toujours sur tous les BMC.

Y a-t-il des utilitaires qui me permettent de configurer la masse les BMCs sur des dizaines de boîtes? Dites que je veux interroger un paramètre sur des dizaines de différents BMCs ou modifier le mot de passe, désactiver l'accès HTTP au WebUI ou désactiver le trou de sécurité infâme zéro ciphère .

Points bonus pour tout utilitaire qui permettrait de mettre à jour le micrologiciel BMC, qui est nécessaire pour atténuer plusieurs vulnérabilités de sécurité

30
Stefan Lasiewski

J'utiliserais probablement ansible . C'est un moteur de gestion/orchestration de configuration très simple qui est beaucoup plus simple de démarrer avec que la marionnette (la marionnette était mon choix à nouveau pour cela, mais pas toujours maintenant, après avoir découvert une annulation).

Le bénéfice de l'ansite ici est qu'il communique directement sur SSH, vous pourrez donc commencer à utiliser uniquement vos informations d'identification et flux de travail SSH existantes.

Si vous configurez actuellement vos BMC avec IPMITOOL, vous pourrez faire quelque chose comme:

Définissez un fichier d'hôtes - cela indique à une insible que les hôtes sont dans le groupe BMC (dans ce cas) et qui doit exécuter des choses.

[bmc]
192.168.1.100
192.168.1.101
192.168.1.102

Et ainsi de suite ... Vous pouvez également utiliser des noms d'hôte dans ce fichier, tant qu'ils sont résolvables.

Ensuite, créez un "Playbook", qui est l'ensemble des commandes à exécuter sur chaque hôte dans un groupe hôte. Vous souhaitez avoir ce genre de disposition de répertoire top-down:

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

Un jeu de jeu a rôles, qui sont de petites sections de configuration que vous pouvez décomposer et réutiliser.

Donc, je créerais un fichier appelé bmc.yml (Toutes les configurations ansibles sont dans les fichiers YAML)

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

Puis à l'intérieur roles/bmcconfig/tasks/main.yml Vous pouvez commencer à répertorier les commandes à exécuter sur chaque hôte, à communiquer avec IPMI.

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

Lorsque vous exécutez le jeu de jeu, avec ansible-playbook -i hosts bmc.yml Les commandes énumérées dans tasks/main.yml Pour chaque rôle sera exécuté dans l'ordre de descente sur chaque hôte trouvé dans le groupe hôte bmc dans hosts

group_vars/all est un fichier intéressant, il vous permet de définir des paires de variables et de valeurs de clés pouvant être utilisées dans vos playbooks.

afin que vous puissiez définir quelque chose comme

ipmitool_password: $512315Adb

dans ton group_vars/all Et en conséquence, vous pourriez avoir quelque chose comme:

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

dans le jeu de jeu.

Vous pouvez trouver plus d'informations sur la manière d'utiliser les "modules" - les composants de l'ansibles qui vous permettent de faire des choses, comment écrire votre propre: D, et ainsi de suite sur les pages de documentation ansiques .

16
Tom O'Connor

Je suis surpris que personne ne mentionnait Maas ( http://maas.io/ ), ce que vous recherchez exactement. Il peut autoconfigurer et gérer les BMCS et déployer en outre tout système d'exploitation sur les nœuds que vous avez enrôlé dans le système. Il dispose d'une interface utilisateur Web et d'une API reposante et est conçue pour intégrer à tout système d'automatisation.

Lorsqu'une machine PXE-Boots pour la première fois, MAAS utilise l'IPMI dans la bande pour configurer automatiquement les informations d'identification pour vous. À partir de ce point, vous pouvez facilement démarrer à distance et fermer une machine.

Pour plus de détails, check la documentation de Types d'alimentation MAAS BMC qui montre comment configurer manuellement un BMC pour tout nœud enrôlé dans Maas.

3
kiko