[実践編] Ubuntu Serverをスケールアウト型サーバーに配備する(前編)

2014年3月12日(水)
古賀 政純

BIOS設定情報を取得、配布するスクリプトの作成

BIOSの設定情報を取得するスクリプトcapbios.shを作成してみましょう。capbios.shスクリプトの例を以下に示します。

# vi /nfsroot/scripts/capbios.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/
./conrep -s -f /mnt/data_files/bios.cfg ←conrepでBIOS情報をbios.cfgに記録
cd
/bin/umount /mnt

capbios.shは、管理対象サーバーがPXEブートした後、STKのconrepコマンドが実行され、BIOS設定情報を含むbios.cfgファイルをNFSサーバーの/nfsroot/data_filesディレクトリに保存します。STKで提供されているconrepは、BIOS設定情報の取得や配布を行うことが可能なコマンドです。同様に、BIOS設定情報を配布するSTKのスクリプトも作成しておきましょう。

# vi /nfsroot/scripts/depbios.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/
./conrep -l -f /mnt/data_files/bios.cfg ←bios.cfgに基づきconrepでBIOSを設定
cd
/bin/umount /mnt

RAIDコントローラーの設定情報の取得、配布を行うスクリプトの作成

HP ProLiantサーバーで採用されているSmartArray RAIDコントローラーの設定情報を取得するには、STKに含まれるhpssascriptingコマンドを利用します。BIOSと同様、RAIDの設定情報の取得用スクリプトcaphpsa.shと配布用スクリプトdephpsa.shを作成します。

# vi /nfsroot/scripts/caphpsa.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/hpssacli/
./hpssascripting -c /mnt/data_files/hpsa.cfg -internal ←RAID情報を取得
cd
/bin/umount /mnt

# vi /nfsroot/scripts/dephpsa.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/hpssacli/
./hpssascripting -i /mnt/data_files/hpsa.cfg -internal -reset ←RAIDを設定
cd
/bin/umount /mnt

遠隔管理用チップの設定情報の取得、配布を行うスクリプトの作成

管理対象サーバーの電源操作や仮想コンソールによる操作を行うための遠隔管理チップの設定情報の取得、配布を行うには、STKのhponcfgコマンドを使用します。以下に遠隔管理チップの設定情報取得および配布スクリプトの例を示します。

# vi /nfsroot/scripts/capilo4.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/
/bin/modprobe hpilo
./hponcfg -w /mnt/data_files/ilo4.cfg ←遠隔管理チップの情報を取得
cd
/bin/umount /mnt

# vi /nfsroot/scripts/depilo4.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/
/bin/modprobe hpilo
./hponcfg -f /mnt/data_files/ilo4.cfg ←遠隔管理チップを設定
cd
/bin/umount /mnt

管理対象サーバーの電源をOFFにするスクリプトの必要性

サーバーに搭載された遠隔管理チップを使って管理対象サーバーの電源をOFFにするスクリプトを作成しておくことをお勧めします。このスクリプトは、管理対象サーバーがPXEブートと再起動を無限に繰り返すことを防ぐ役目を担っています。

# vi /nfsroot/scripts/poweroff.sh
#!/bin/bash
/bin/mount -t nfs -o rw,nolock 172.16.12.1:/nfsroot /mnt ←NFSマウント
cd /TOOLKIT/
/bin/modprobe hpilo
./hponcfg -f /mnt/data_files/Set_Virtual_Power_BTN.xml ←管理対象マシンの電源断

poweroff.shは、遠隔管理チップiLO4の仮想電源ボタンの機能を使って管理対象サーバーの電源をOFFにします。iLO4ではXMLファイルによって様々な制御が可能ですが、ここでは、電源をOFFにするXMLファイルを指定しています。上記スクリプトで指定しているXMLファイルの記述例を以下に示します。

# vi /nfsroot/data_files/Set_Virtual_Power_BTN.xml
<RIBCL VERSION="2.0">
<LOGIN USER_LOGIN="adminname" PASSWORD="password">
<SERVER_INFO MODE="write">
<HOLD_PWR_BTN/>
</SERVER_INFO>
</LOGIN>
</RIBCL>

[参考情報]

無償提供の「HP Lights-Out XML PERL Scripting Sample for Linux」と呼ばれるソフトウェアに、様々なXMLファイルの雛型が収録されています。

BIOS、RAID、遠隔管理チップの設定情報の取得、配布を行うバッチ・スクリプト

上記の取得用スクリプトcapbios.sh、caphpsa.sh、capilo4.sh、poweroff.shを一括して実行するようなバッチ・スクリプトを作成しておくとよいでしょう。バッチ・スクリプトcapall.shとdepall.shは、defaultファイル内で指定したものです。管理対象サーバーがPXEブート後、オンメモリでバッチ・スクリプトがロードされ、STKが実行されます。

# vi /nfsroot/scripts/capall.sh
#!/bin/sh
./capbios.sh
./caphpsa.sh
./capilo4.sh
./poweroff.sh

# vi /nfsroot/scripts/depall.sh
#!/bin/sh
./depbios.sh
./dephpsa.sh
./depilo4.sh
./poweroff.sh

# cd /nfsroot/scripts/
# chmod 755 *.sh

BIOS、RAID、遠隔管理チップの設定情報の取得テスト

DHCP、TFTP、NFSサービスを提供するUbuntu Serverと同一LANセグメントに設置した管理対象サーバーの電源を投入し、管理対象サーバーをPXEブートさせます。NFSサーバーの/nfsroot/data_filesディレクトリにbios.cfg、hpsa.cfg、ilo4.cfgファイルが自動的にアップロードされるはずです。

図2:管理対象サーバーのPXEブートの様子(クリックで拡大)
図3:管理対象サーバーでSTKが実行されている様子(クリックで拡大)
図4:NFSサーバーの/nfsroot/data_filesディレクトリにbios.cfg、hpsa.cfg、ilo4.cfgファイルがアップロードされた様子(クリックで拡大)

BIOS、RAID、遠隔管理チップの設定情報の配布

スケールアウト型基盤では、取得したBIOS設定情報やRAID設定情報等を他の同機種のサーバーに一斉に展開する運用が見られます。これを実施するには、STKによってdepall.shがロードされるように、defaultファイルの「default stk950cap」をコメントアウトし、「default stk950dep」のコメントアウトの記号「#」を外します。

# vi /tftpboot/pxelinux.cfg/default
#default stk950cap
default stk950dep
...

以上で、BIOS、RAID、遠隔管理チップの設定を自動で取得、配布する管理サーバーをUbuntu Serverで構築することができました。スケールアウト型システムにおいては、ハードウェア設定の自動化だけでなく、OS配備の自動化も必要です。さらに、ベアメタル配備と仮想化基盤の両方に対応したスケールアウト型のクラウド基盤では、ハードウェア設定とOSのインストールの両方で自動化が必要になる場合が少なくありません。本連載で記載した手順で、Ubuntu Serverを入れる前のProLiantサーバーのハードウェア設定の自動化に是非挑戦してみてください。

<後編に続きます。>

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています