[DEFAULT] type = IPMI username = foo password = hogehoge [compute-0-0] ip = 172.16.3.1 : :
著者:飯坂剛一
Publish: 2007/12/05
powerctlコマンドは登録したホストの 電源制御やリセット、shutdownを行うための テキストユーザインタフェースです。
この資料では、powerctlの設定方法と使用方法について説明します。
powerctlをインストールするためには、 次のパッケージをインストールします。
powerctl-3.1-2.noarch.rpm
freeipmi-0.4.6-1.el4.x86_64.rpm
ilopower-1.0-5.noarch.rpm
perl-IO-Socket-SSL-1.01-1.el4.rf.noarch.rpm
perl-Net-SSLeay-1.25-3.2.el4.rf.x86_64.rpm
2つのperlのパッケージはilopowerが必要としているものです。
powerctl は freeipmiに含まれる ipmipower、 ilopower に含まれる ilopower を内部で呼び出していいます。
IPMIは各社ほとんどのコンピュータがサポートしています。 ILOはHP社の一部のコンピュータがサポートします。
IPMIとILOについの詳細は次のURLを参照してください。
![]() |
ilopowerは 1.0-5 より以前のバージョンには ホスト名での指定ができないバグが見つかっています。 |
powerctlコマンドは /etc/powerctl.d/powerctl.conf ファイルを読み込んでいます。
セキュリティー上の理由からこのファイルはrootでしか 読み込めないようにしておいてください。
username と password は各ノードに設定したIDとパスワードに置き換えてください。
[DEFAULT] type = IPMI username = foo password = hogehoge [compute-0-0] ip = 172.16.3.1 : :
次のように記述することで、 パスワードやIDが異なるような場合や、 IPMIとILOの混在環境でも電源制御することができます。
[DEFAULT] type = IPMI username = foo password = hogehoge [compute-0-0] type = ILO username = foo password = hogehoge ip = 172.16.3.1 [compute-0-1] type = IPMI username = hoo password = houhou ip = 172.16.3.2
[DEFAULT]タグには全ノード共通の情報を記述でき、つぎの3つが指定できます。
type: ILO, RILOE, IPMIのいづれか
username: 電源制御での認証で使用するユーザ
passwd: 電源制御での認証で使用するパスワード
[ホスト名]タグには該当ホストのホスト名の情報を記述します。
type: ILO, RILOE, IPMIのいづれか。 省略した場合は[DEFAULT]タグで指定したものが使われます。
username: 電源制御での認証で使用するユーザ 省略した場合は[DEFAULT]タグで指定したものが使われます。
passwd: 電源制御での認証で使用するパスワード 省略した場合は[DEFAULT]タグで指定したものが使われます。
ip: 該当ホストでの電源制御用に割り当てられているIPアドレスを指定します。 省略された場合は、ホスト名タグで指定したホスト名に '-bmc'を付加したホスト名で参照できるIPアドレスを使用します。
shutdown コマンド発行する場合はこのタグに記述されている ホストに対してsshコマンドを経由して実行されます
powerctl-hostconv コマンドは、 既存ホストの情報から電源制御用のホスト情報を 生成するためのスクリプトです。
使用方法:
# powerctl-hostconv [-p パターン] サブネット 電源制御用サブネット
このスクリプトは /etc/hosts 中の各エントリで、 compute の文字列に合致するホストを対象にして、 サブネットを変換して標準出力へ出力します。
検索パターンを環境変数BMC_HOSTPTNで定義するか、 -p オプションで指示することで、 computeと異なる文字列に合致するホストを対象とすることもできます。
今、次のようなエントリが/etc/hostsにあり、 電源制御用にアサインしているネットワークが192.168.20.0だとします。
[root@cluster sbin]# grep compute /etc/hosts 192.168.10.254 compute-0-0.local compute-0-0 c0-0 192.168.10.253 compute-0-1.local compute-0-1 c0-1 192.168.10.252 compute-0-2.local compute-0-2 c0-2 192.168.10.251 compute-0-3.local compute-0-3 c0-3 192.168.10.250 compute-0-4.local compute-0-4 c0-4 192.168.10.249 compute-0-5.local compute-0-5 c0-5 192.168.10.248 compute-0-6.local compute-0-6 c0-6 192.168.10.247 compute-0-7.local compute-0-7 c0-7 192.168.10.246 compute-0-8.local compute-0-8 c0-8 192.168.10.245 compute-0-9.local compute-0-9 c0-9 192.168.10.244 compute-0-10.local compute-0-10 c0-10 192.168.11.244 compute-0-10-eth1 192.168.11.245 compute-0-9-eth1 192.168.11.246 compute-0-8-eth1 192.168.11.247 compute-0-7-eth1 192.168.11.248 compute-0-6-eth1 192.168.11.249 compute-0-5-eth1 192.168.11.250 compute-0-4-eth1 192.168.11.251 compute-0-3-eth1 192.168.11.252 compute-0-2-eth1 192.168.11.253 compute-0-1-eth1 192.168.11.254 compute-0-0-eth1
次のようにコマンドを実行することで 電源制御用のhostsファイルを生成することができます。
[root@cluster sbin]# powerctl-hostconv 192.168.10.0 192.168.20.0 192.168.20.254 compute-0-0-bmc 192.168.20.253 compute-0-1-bmc 192.168.20.252 compute-0-2-bmc 192.168.20.251 compute-0-3-bmc 192.168.20.250 compute-0-4-bmc 192.168.20.249 compute-0-5-bmc 192.168.20.248 compute-0-6-bmc 192.168.20.247 compute-0-7-bmc 192.168.20.246 compute-0-8-bmc 192.168.20.245 compute-0-9-bmc 192.168.20.244 compute-0-10-bmc
フロントエンドノードにログインして、 root ユーザになります。
root権限で/usr/sbin/powerctl を実行します。
カーソルキーとスペースキーで対象ホストを選択し、 タブキーでコマンドを選択して操作します。
各コマンドは次の操作となります。
Cancel: powerctlの終了
Halt: シャットダウンを実行してシステムを停止
PowerOff: 電源停止
Reset: システムをリセット
Boot: システムを起動
make コマンドをメニューのように使って、 でマシンを起動/停止する方法について説明します。
はじめに、/etc/hostsに各マシンのIPMIあるいはILOのためのアドレスを 次のように記述しておきます。 IPアドレスは任意で構いませんが、 ホスト名は "-bmc" を付けた名前にしておきます。
192.168.13.254 compute-0-0-bmc 192.168.13.253 compute-0-1-bmc 192.168.13.252 compute-0-2-bmc 192.168.13.251 compute-0-3-bmc
次のようなMakefileを記述します。 Makefile 中の HOSTPTN で指定した文字列に合致するホストを /etc/hosts から探してそれに対して、 BOOT_METHOD で指定したプロトコルのコマンドを呼び出しています。
admin と password は設定したIDとパスワードに置き換えてください。
# BOOT_METHOD: boot-ilo | boot-ipmi BOOT_METHOD=boot-ilo IPMICMD=/usr/sbin/ipmipower -u admin -p password ILOCMD=/usr/sbin/ilopower -u admin -p password # TIMEOUT: in milliseconds. # i.e.: 20000 milliseconds is 20 seconds. TIMEOUT=-t 40000 # Set the pattern string for seach BMC host in /etc/hosts. HOSTPTN=bmc # set the interval seconds for BOOT up. BOOTINTERVAL=2 .PHONY: boot boot: $(BOOT_METHOD) @echo .PHONY: shutdown shutdown: @echo "CAUTION: all compute node will be shutdown!" @echo -n "You have chance to cancel this process in 10sec." @for T in 1 2 3 4 5 6 7 8 9 10 ; do \ sleep 1 ; echo -n "." ; \ done ; echo @ScatterCmd "/sbin/shutdown -h now" BMCHOSTS=$(shell grep -- $(HOSTPTN) /etc/hosts | cut -f2) .PHONY: boot-ipmi boot-ipmi: @echo "Waiting $(BOOTINTERVAL) seconds on each nodes." @echo 'In many case, you can ignore "timeout"' @for H in $(BMCHOSTS) ; do \ HOST=`echo $$H | cut -d- -f1 ` ; \ $(IPMICMD) $(TIMEOUT) -h $$H --on || : ; \ sleep $(BOOTINTERVAL) ; \ done ; echo .PHONY: boot-ilo boot-ilo: @echo "Waiting $(BOOTINTERVAL) seconds on each nodes." @for H in $(BMCHOSTS) ; do \ HOST=`echo $$H | cut -d- -f1 ` ; \ $(ILOCMD) -H $$H --on || : ; \ sleep $(BOOTINTERVAL) ; \ done ; echo
make コマンドでの起動の実行例:
# make boot
make コマンドでの停止の実行例:
# make shutdown