数百のIPMI BMCを管理するにはどうすればよいですか?


30

IPMIサービスを提供できるコンピューターが200台以上あります。サーバーは複数の異なる企業(SuperMicro、Dellなど)によって製造されており、約5つの異なるベンダーから6〜7個のBMCモデルがあり、各モデルには独自の特異性があります。

これまで、DHCPの組み合わせを使用してBMCを構成し、各BMCを手動で構成してきました。手動設定は、ブータブルCD-ROM、BIOSからの設定(サポートされている場合)、ipmitoolなどのユーティリティを使用したホストオペレーティングシステムからの設定を使用して実行できます。 freeipmiなどのまたはipmitoolを使用してリモートでネットワークアドレスを決定できますデバイス。

ただし、この手動構成はかなり面倒です。場合によっては、すべてのBMCの設定をグローバルに変更したいため、管理者が多数のボックスに対してコマンドを実行する必要があります。BMCはさまざまなベンダーから提供されており、BMCの各モデルには独自の特異性があるため、同じコマンドがすべてのBMCで常に機能するとは限りません。

多数のボックスでBMCを一括設定できるユーティリティはありますか?数十の異なるBMCでパラメーターを照会したり、パスワードを変更したり、WebUIへのHTTPアクセスを無効にしたり、悪名高い暗号ゼロセキュリティホールを。

いくつかのセキュリティ脆弱性を緩和するために必要なBMCファームウェアの更新を可能にするユーティリティのボーナスポイント


3
これは、パペット/ mcollectiveでできることのように思えます。facterを使用し、カスタムファクトを使用して、使用しているデバイスのタイプを検出し、次にパペットを使用するか、mcollectiveでコマンドをプッシュして設定します。
ゾレダチェ

また、xcatをご覧になることもできます。構成管理に関しては、Puppetほど洗練されていません。グループで動作できる統合された分散シェルがあり、IPMIと緊密に統合されています。
アイザック

Puppet Razorも解決策かもしれませんが、まだ検討していませんが、vdatacloud.com
Stefan Lasiewski

私はPuppetconfにいて、Mcollective(別名Puppet Enterprise Orchestration)のプロジェクトマネージャーと話しました。Mcollectiveが(OSレベルで)ノードを管理しているので、IPMIレベルでこれを機能させることは、Mcollectiveが設計されたものとはかなりかけ離れているようです。しかし、それはおそらく可能です。
ステファンLasiewski

回答:


16

おそらくAnsibleを使用します。これは非常にシンプルな構成管理/オーケストレーションエンジンであり、Puppetよりも使い始めるのがはるかに簡単です(Puppetは以前はこれに適していましたが、Ansibleを発見した今では必ずしもそうではありません)。

ここでのAnsibleの利点は、SSHを介して直接通信することです。そのため、既存のSSH資格情報とワークフローのみを使用して開始できます。

現在、ipmitoolを使用してBMCを構成している場合、次のようなことができます。

Hostsファイルを定義する-これは、どのホストがbmcグループ(この場合)に属し、どのホストで何を実行するかをAnsibleに伝えます。

[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.ymltasks/main.yml各ロールにリストされたコマンドが、ホストbmcグループ内の各ホストでトップダウンの順序で実行されますhosts

group_vars/all 興味深いファイルです。これにより、プレイブックで使用できる変数と値のキーと値のペアを定義できます。

のようなものを定義することができます

ipmitool_password: $512315Adb

あなたgroup_vars/allとその結果、あなたは次のようなものを持つことができるでしょう:

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

プレイブックで。

Ansible Documentation Pagesで、「モジュール」の使用方法に関する詳細情報を見つけることができます。これは、物事を行えるAnsibleのコンポーネント、独自の:Dなどの記述方法などです。


12

私は私たちの1000台のマシンでコマンドを実行するための小さなPythonツールを書きました(そしてそれらのbmc、drac、ilo、およびimmの)

私がやったのは、vsc-manageと呼ばれるpython-frameworkを書くことで、サーバーまたはbmcに送信されるコマンドを実行し、どのタイプのマシンがどのコマンドを必要とするかを設定しました。

これらのコマンドを組み合わせたいくつかのクラスがありますが、

そのため、immを備えたマシンの場合、immにsshし、実行しますpower off(スクリプトのような方法で)

私たちのimbブレードシャーシの場合、これをシャーシで実行します

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

一部のdell dracでは、OS上でこれを実行します(マスターノードの)

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をまだサポートしていません。
イェンスティマーマン

面白いですね、イェンス。このプロジェクトを共有していただきありがとうございます。Ansible + vsc-manageは、サーバーをまとめて扱う際に非常に便利に見え始めます。
ILIV

ILIV、vsc-manageのすべての機能をansibleに追加する時間があれば良かったと思います;
Jens Timmerman

3

MAAS(http://maas.io/)に言及している人がいないことに驚いています。BMCを自動構成および管理でき、さらにシステムに参加したノードにOSを展開できます。Web UIとRESTful APIを備えており、自動化システムと統合するように設計されています。

マシンが初めてPXEブートするとき、MAASはインバンドIPMIを使用して資格情報を自動的に設定します。その時点から、マシンを簡単にリモートで起動およびシャットダウンできます。

詳細については、MAASに登録されているノードのBMCを手動で構成する方法を示すMAAS BMC Power Typesのドキュメントを確認してください。


良いヒント、ありがとう。とてもかっこいい。UbuntuのMAASは、優れたプロビジョニング、ライフサイクル管理を行うように見え、いくつかの便利なIPMI管理ツールがあるように見えます。私たちはすでにForemanを使用しています。ただし、ForemanのIPMI管理はかなり弱く、グループ化や組織構造を提供しませんが、少なくとも何かがあります。他のいくつかのツールと組み合わせて使用​​して、キット全体とcaboodle全体を管理します。
ステファンLasiewski

Foremanには、v1.1以降の組織と場所(projects.theforeman.org/projects/foreman/wiki/…を参照)のサポートがあることに注意してください。これらの機能を(ホストグループと一緒に)使用して、ホストの適度にきめ細かい(パラメーターまたはキーと値のペアをサポートする階層を含む)コレクションを提供できます。
mxmader 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.