クラウド・コンピューティングの特徴の 1 つは、アプリケーションをプロセッサー環境間で移動できることです。ただしこの特徴を適用するには、アプリケーションを移動する前に、そのアプリケーションのターゲット・オペレーティング・システムが移動先の環境になければなりません。そこで、新しいオペレーティング・システムのインストールを自動化できたら便利だと思いませんか?
Linux の自動インストールは、Intel™ アーキテクチャー・システムではよく知られた機能ですが、ハードウェア管理コンソール (HMC) を使用する System p や IBM Power Systems となると、インストールの自動化という問題はそう簡単には解決できません。この記事で説明するソリューションの利点のひとつは、このソリューションが純粋な Linux ソリューションであることから、特定の AIX スキルは必要ないことです。
このソリューションの目標は、保守するにも変更するにも簡単な一連の構成ツールを使用してオペレーティング・システムのインストールを自動化することです。このソリューションには以下の特徴があります。
- 新規に作成してインストールした LPAR は静的 IP アドレスを使用しますが、これは LPAR の最終構成にのみ関連します。つまり、インストール・プロセスの間は、DHCP (Dynamic Host Configuration Protocol) を使用できるということです。
- AutoYaST (Automatic Linux Installation and Configuration with YaST2) 構成 XML ファイルは汎用ファイルなので、HTTP、MySQL をはじめとする各種のサーバーに使用することができます。
- AutoYaST ファイルにはシステム固有の情報 (IP アドレス、ホスト名など) が含まれません。
- あらゆる操作が自動化され、HMC で単一のコマンドを使って新規の LPAR をインストールできるようになります。
自動化ソリューションを作成し、使用するためのステップは以下のとおりです。
- AutoYaST ファイルを構成する
- DHCP/BOOTP および TFTP サーバーを構成する
- HMC
lpar_netbootコマンドを使用する -gパラメーターを使用してlpar_netbootを自動化する- 自動化ソリューションを再利用する
SUSE Linux では、AutoYaST.xml という名前の XML 構成ファイルを使用してオペレーティング・システムのインストールを制御します。デフォルトでは、毎回 AutoYaST を使用するたびに、まったく同じ構成のシステムがインストールされるので、それぞれの構成に個別の AutoYaST ファイルが確実に用意されることになります。例えば、Web サーバー用の AutoYaST ファイルと、MySQL サーバー用の AutoYaST ファイルがあるといった具合です。その一方、IP アドレスとホスト名が異なるだけのサーバー用に複数の AutoYaST ファイルを構成して管理するとなると厄介で、時間もかかります。
- IP アドレスとホスト名を DHCP サーバーから取得するようにカスタマイズした AutoYaST ファイルを作成するには、SUSE インストール CD から AutoYaST ファイルをコピーし、コピーしたファイルを以下のように変更します。
- 標準 AutoYaST ファイルは DHCP を使用するようにセットアップされています。そこで、ネットワーク・セクションを変更して、オペレーティング・システムの初期インストールにのみ DHCP が使用されるようにします。ホスト名が割り当てられているネットワーク・セクションが絶対にないことを確認してください。ホスト名が割り当てられている場合には、そのセクション全体を除去します。
- XML ファイルに静的 IP 情報や DNS 情報をはじめ、何らかのネットワーク情報が含まれている場合には、該当するセクションをファイルから削除します。
リスト 1 のコードをコピーして、AutoYaST ファイルの最後の XLM タグの直前に配置します。この新しいセクションに含まれるスクリプトは、現在ブートされている DHCP 構成を静的ネットワーク構成に変換します。次に LPAR がブートされるときには、この静的ネットワーク構成が使用されることになります。
このスクリプトによって、LPAR ごとに IP アドレスをハードコーディングした個別の AutoYaST ファイルを用意する必要がなくなるため、DHCP サーバーの管理だけに専念することができます。
リスト 1. AutoYaST DHCP 変換スクリプト
<scripts>
<init-scripts config:type="list">
<listentry>
<filename>network_setup</filename>
<interpreter>shell</interpreter>
<source><![CDATA[#!/bin/bash
### Disable ipv6
echo 'install ipv6 /bin/true' >> /etc/modprobe.conf.local
### Variables to Calculate Network Configuration Settings for a static configuration ###
ACTIVE_INTERFACE=`/sbin/ifconfig | grep eth | awk '{print $1}'`
IP_ADDRESS=`/sbin/ifconfig $ACTIVE_INTERFACE | grep 'inet addr' | awk '{print $2}'
| sed 's/addr://'`
NETMASK=`/sbin/ifconfig $ACTIVE_INTERFACE | grep 'inet addr' | awk '{print $4}'
| sed 's/Mask://'`
BROADCAST=`/sbin/ifconfig $ACTIVE_INTERFACE | grep Bcast: | awk '{ print $3 }'
| sed 's/Bcast://'`
NETWORK=`/sbin/ip route list | grep $IP_ADDRESS | awk '{ print $1 }'
| sed 's/\/[1-9][1-9]//'`
GATEWAY=`/sbin/route | grep default | awk '{print $2}'`
HOSTNAME=`/usr/bin/host $IP_ADDRESS | awk '{print $5}' | sed '$s/.$//'`
### Setup HOSTNAME
echo "$HOSTNAME" > /etc/HOSTNAME
### Setup Gateway Address
echo "default $GATEWAY - -" > /etc/sysconfig/network/routes
### Setup /etc/hosts with correct host information
HOST=`/usr/bin/host $IP_ADDRESS | awk '{print $5}' | sed '$s/.$//' | cut -d "." -f 1`
echo "$IP_ADDRESS $HOSTNAME $HOST" >> /etc/hosts
### Network configuration file rewrite for static configuration
INT_CONF_FILE=/etc/sysconfig/network/ifcfg-eth-id-`ifconfig eth0 | grep HWaddr
| awk '{ print $5 }' | perl -ne '$var=$_; print lc($var)'`
echo 'DEVICE=eth0' > $INT_CONF_FILE
echo 'BOOTPROTO=static' >> $INT_CONF_FILE
echo "IPADDR=$IP_ADDRESS" >> $INT_CONF_FILE
echo "NETMASK=$NETMASK" >> $INT_CONF_FILE
echo "BROADCAST=$BROADCAST" >> $INT_CONF_FILE
echo "NETWORK=$NETWORK" >> $INT_CONF_FILE
echo 'STARTMODE=onboot' >> $INT_CONF_FILE
echo 'TYPE=Ethernet' >> $INT_CONF_FILE
### Restart Network
/etc/init.d/network restart
]]></source>
</listentry>
</init-scripts>
</scripts>
|
ステップ 2. DHCP/BOOTP および TFTP サーバーを構成する
このソリューションでは、主要な Linux ディストリビューションに共通して含まれる標準 Linux DHCP サーバーを使用します。このステップで行うのは、ネットワーク・ブート情報を新しい LPAR に提供するように DHCP サーバーを構成することです。初期コードは、TFTP (Trivial File Transfer Protocol) サーバーを介して LPAR にロードされます。ネットワーク・ブートをセットアップするには、DHCP サーバーと TFTP サーバーの両方がネットワーク内のサーバーにロードされている必要があります。
このソリューションに使用する DHCP サーバーは、ネットワーク内のシステムに動的に TCP/IP アドレスを提供するようには構成されませんが、この従来の役割を果たす DHCP サーバーと共存することは可能です。このような構成は、DHCP サーバーがブート対象のシステムとは異なるネットワーク上にある場合でも機能します。この構成を使用すれば、例えばテキサスにあるサーバーからニューヨークにあるシステムを動的にブートすることも可能です。
lpar_netboot コマンドがこのソリューションのステップ 3 で説明するように機能するためには、インストールするそれぞれの LPAR ごとに DHCP サーバーを構成する必要があります。この方法の利点は、自動的にインストールされる LPAR の構成情報がすべて、dhcpd.conf ファイルに含まれることです。したがって、前のステップで変更した AutoYaST ファイルには、LPAR のネットワーク構成を定義する情報をハードコーディングする必要がありません。
リスト 2 に、サンプル dhcp.conf ファイルを記載します。このサンプルをモデルとして使用して、構成する LPAR それぞれの host の定義に置き換えてください。この記事の「ダウンロード」セクションにある zip ファイルには、addsystem という名前のスクリプトが含まれています。このスクリプトを使うと、dhcp.conf ファイルの編集を自動化することができます。
dhcpd.conf ファイルに変更を加えた場合、その都度 DHCP サーバーを停止して再起動することによってその変更を有効にする必要があります。
リスト 2. サンプル dhcpd.conf ファイル
ddns-update-style ad-hoc;
allow bootp;
subnet 0.0.0.0 netmask 0.0.0.0 {
host rcc-hny-poc-003 {
option host-name "myserver.cloud9.ibm.com";
fixed-address 192.168.0.203;
hardware ethernet 16:E9:10:94:87:03;
filename "inst64";
}
next-server 192.168.0.201;
option routers 192.168.0.201;
}
|
以下で、このサンプル dhcp.conf ファイルのオプションについて説明します。
subnetは、要求を送信するサーバーがネットワーク内のどこに位置するかに関係なく、このサーバーが他のサーバーからの要求に応答するように構成します。この DHCP サーバーを動的なアドレス指定を行うように構成することはしないので、このサーバーはネットワーク上での通常の DHCP 動作に干渉することなく LPAR からのブート要求に応答します。hostセクションは、構成対象の各 LPAR を定義します。構成ファイル内のhostセクションは、必要に応じていくつあっても構いません。サンプル・ファイルのhostセクション内に含まれるオプションは、LPAR をインストールし、そのエントリーを引き続き DHCP クライアントとしての LPAR のブートに使用できるようにするために最低限必要なオプションです。host-nameは、DNS がクライアントの IP アドレスに割り当てる名前です。クライアントに DNS エントリーがない場合には、このオプションを使って LPAR のローカル・ホスト・ファイルに含める名前を指定します。fixed-addressは、LPAR に割り当てる IP アドレスです。DHCP サーバーのアドレス・プールにデフォルト設定される代わりに、LPAR の IP アドレスにはここに指定されたアドレスが使用されます。オペレーティング・システムのブート時には常に、指定した IP アドレスをこの LPAR に確保できるという利点があります。hardware ethernetは、LPAR の MAC アドレスを指定します。この MAC アドレスが、インストールの BOOTP フェーズで LPAR をこのhostエントリーに関連付けるために使用されます。filenameは、BOOTP 要求に対処するときにロードする Linux カーネルを指定します。このファイルは、next-serverオプションで指定されたサーバーから TFTP を介してアクセス可能なファイルでなければなりません。あるいはnext-serverが省略されている場合には、DHCP サーバーから TFTP を介してアクセス可能なファイルである必要があります。
next-serverは、filenameオプションで定義された Linux カーネルに、TFTP を介してアクセス可能なサーバーのアドレスを指定します。TFTP サーバーが DHCP サーバーと同じサーバー上にある場合には、このオプションを省略することができます。option routersは、ルーターが TFTP サーバー要求をネットワークで TFTP サーバーに転送しないように構成されている場合に使用するオプションで、TFTP サーバーのアドレスを指定します。TFTP サーバーと DHCP サーバーが同じサーバー上にある場合には、このオプションを省略することができます。
TFTP サーバーを構成するには、SLES ディストリビューションで入手できる atftpd パッケージを使用することができます。TFTP 構成は、TFTP を使用してファイルをダウンロードできるディレクトリーを提供します。このダウンロード・ディレクトリーは通常、/tftpboot です。ダウンロード・ディレクトリーには、dhcpd.conf ファイルの各 host セクションの filename パラメーターで指定するファイルが用意されている必要があります。
例えばネットワークから SUSE をインストールする場合のファイルは、SUSE インストール CD の /suseboot ディレクトリーにある inst64 ファイルです。このファイルを /tftpboot ディレクトリーに配置して、ファイルのアクセス権が、誰に対しても読み取り可能なように設定されていることを確認してください。
ステップ 3. HMC lpar_netboot コマンドを使用する
HMC は既存の LPAR を起動するために使用することができますが、それと同じように、新しい LPAR にオペレーティング・システムをインストールする際にも使用することができます。HMC にはグラフィカル・ユーザー・インターフェースが用意されているものの、すべての HMC 関数はコマンドラインからでも使用することができます。コマンドラインを使用することで、ソリューションのこのステップをさらに自動化することが可能になります。
ネットワーク・インストールを開始する HMC コマンドは lpar_netboot です。lpar_netboot コマンドの詳しい使用方法については、この記事の「参考文献」セクションに記載したリンクを参照してください。このソリューションでは lpar_netboot 形式を使用して、LPAR をネットワークからブートします。
リスト 3 は、lpar_netboot コマンドの一例です。このサンプルを必要に応じて変更してから、このコマンドを使って LPAR に電源投入し、ネットワーク内のサーバーからブートできるかどうか試してみてください。
このサンプル・コマンドは以下のことを前提としています。
- 前のステップで説明したように、DHCP/BOOTP サーバーは新しい LPAR の MAC アドレスを使用して構成されていて、SUSE インストール・プログラムのエントリーがあること。
- 新しいLPAR は常に、dhcpd.conf ファイルに定義された静的 IP アドレスを持つ DHCP クライアントとしてブートさせる予定であること。
リスト 3. サンプル lpar_netboot コマンド
lpar_netboot -f -t ent -m 16E910948703 -s auto -d auto -S 192.168.0.201 -G \ 192.168.0.201 -C 192.168.0.203 lpar1 lpar1 SystemA |
注: リスト 3 のバックスラッシュ文字は、行が続いていることを示すために使用しているもので、コマンドには含まれません。コマンドを入力するときには、バックスラッシュを使用しないでください。
以下に、このサンプルで使用しているパラメーターについて説明します。
-mは、ブート対象とするクライアントの MAC アドレスです。MAC アドレスを取得するには、lpar_netbootコマンドを別の形式で使用します。-Sは、DHCP/BOOTP サーバーの IP アドレスです。-Gは、DHCP/BOOTP サーバーに到達するために必要なゲートウェイの IP アドレスです。DHCP/BOOTP サーバーがローカル・ネットワーク上にある場合には、代わりに DHCP/BOOTP サーバーの IP アドレスを使用してください。-Cは、ブート後のクライアントに割り当てる IP アドレスです。- コマンドの最後には、以下の 3 つの名前があります。
- LPAR の HMC 名 (
lpar1) - LPAR 構成名 (デフォルトでは、LPAR 自体の名前 (
lpar1) と同じです) - HMC で LPAR を所有するサーバーの名前 (
SystemA)
- LPAR の HMC 名 (
この記事の「ダウンロード」セクションにある zip ファイルには、autoinstall という名前のサンプル・スクリプトが含まれています。このスクリプトを HMC サーバーにインストールすると、記事で説明した手法を使用して LPAR の新規インストールを自動化することができます。スクリプトは自動的に LPAR の MAC アドレスを取得し、DHCP addsystem スクリプトを呼び出し、DHCP サーバーを構成した後に再起動し、次に lpar_netboot コマンドを呼び出して LPAR をインストールします。そして最後に mkvterm コマンドを呼び出し、インストール状況を表示します。
ステップ 4. -g パラメーターを使用して lpar_netboot を自動化する
この記事でこれまでに説明したステップに従って、LPAR が Linux インストーラーをロードするようになりました。HMC から LPAR へのコンソール接続を開くと、インストール・プログラムの最初の画面が表示されます。
さらにインストールの自動化を進めるには、lpar_netboot コマンドの -g 引数を使用して、新しくブートされたシステムのインストール・プログラムに追加パラメーターを渡します。SUSE や Red Hat などの Linux ディストリビューションでは、インストール・プログラムに正しい情報を渡してインストールを開始させる限り、ネットワーク経由でのインストールを完全に自動化することができます。
-g 引数で渡す情報は、インストーラーが SUSE AutoYaST XML ファイルと SUSE オペレーティング・システムのインストール RPM を検出するのに必要な情報が含まれる文字列です。この情報のフォーマットはディストリビューションごとにドキュメント化されており、すべてのアーキテクチャー (i386、Power など) で共通です。
リスト 4 に、サーバーから自動インストールを開始する -g パラメーターの例を記載します。このサンプルを必要に応じて変更してから、lpar_netboot コマンドで使用してオペレーション・システムの自動インストールを開始してください。
このサンプルでは以下を前提としています。
- インストール・サーバーで Web サーバーが稼働中であること。Web サーバーは、DHCP サーバーと TFTP サーバーを持つサーバーと同一にすることもできますが、必ずしもそうする必要はありません。
- SUSE インストール CD イメージが、Web サーバーのドキュメント・ルート・ディレクトリーの下にコピーされていること。
- この記事のステップ 1 で構成した AutoYaST.xml ファイルのコピーが、SUSE インストール・イメージと同じ Web サーバーの同じディレクトリーに配置されていること。
リスト 4. lpar_netboot コマンドのサンプル -g パラメーター
-g "hostip=192.168.0.203 netmask=255.255.255.0 \ gateway=192.168.0.1 nameserver=192.168.0.1 insmod=ibmveth \ install=http://192.168.0.201/suse autoyast=http://192.168.0.201/autoyast.xml" |
注: リスト 4 のバックスラッシュ文字は、行が続くことを示すために使用しているもので、コマンドには含まれません。コマンドを入力するときには、バックスラッシュを入れないでください。
リスト 4 の insmod 引数は、仮想イーサネット・アダプターをロードするための引数です。ブート対象の LPAR に物理イーサネット・アダプターが割り当てられている場合、この引数は必要ありません。
これで、クラウド環境の LPAR を簡単に管理できる構成が完成しました。新しい LPAR を導入するには、以下のステップに従います。
- HMC で LPAR を作成します。
- HMC SSH インターフェースにログインして
lpar_netbootを実行し、LPAR の MAC アドレスを判別します。 - 新しい LPAR の情報で dhcpd.conf ファイルを再構成します。
- DHCP サーバーを停止してから再起動し、dhcpd.conf の変更を有効にします。
- もう一度 HMC にログインして
lpar_netbootを実行し、LPAR にオペレーティング・システムをインストールします。
後はオペレーティング・システムのインストールが完了するのを待つだけです。インストールが完了すると、クラウド環境に新しい LPAR が加わり、LPAR にロードするプロセスを受け入れられる状態になっています。
| 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|---|---|---|
| Code for this article | autoinstall.zip | 2KB | HTTP |
学ぶために
- IBM Systems Information Center のオンライン参照情報で、
lpar_netbootコマンドの詳細を学んでください。 - 記事「DHCP (Dynamic Host Configuration Protocol)」では、DHCP サーバーの構成について検討しています。
- クラウド・コンピューティング・プラットフォームとアプリケーションについての詳細は、「Linux によるクラウド・コンピューティング」(developerWorks、2008年9月) を参照してください。
- クラウド・コンピューティングの背景を理解するには、「Amazon Web サービスを利用したクラウド・コンピューティング: 第 1 回 概要」(developerWorks、2008年7月) も参考になります。
- developerWorks Linux ゾーンに豊富に揃った Linux 開発者向け (Linux を始めたばかりの開発者も含まれます) の資料を調べてください。記事とチュートリアルの人気ランキングも要チェックです。
- developerWorks に掲載されているすべての Linux のヒントと Linux チュートリアルを参照してください。
- developerWorks technical events and webcasts で最新情報を入手してください。
製品や技術を入手するために
- developerWorks から直接ダウンロードできる IBM ソフトウェアの試用版を使用して、Linux で次の開発プロジェクトを構築してください。
議論するために
- ブログ、フォーラム、ポッドキャスト、スペースから、developerWorks コミュニティーに参加してください。