Linux クラウドの自動インストール

新しい Power System または System p LPAR での Linux インストール・プロセスを単純化する方法

クラウド・コンピューティングとクラウド・ストレージは、物理リソース (プロセッサー、ストレージなど)をインターネットで拡張可能かつ共有可能なリソース (「サービス」としてのコンピューティングとストレージ)に変身させます。この物理リソースのサービスへの変換は、仮想化によって一段とスケーラブルかつ効率的になります。ここで言っている仮想化は新しい概念というわけではなく、サーバーを仮想化して物理システムを共有できるようにするということです。クラウド・コンピューティングでは、ユーザーは実際のリソースがどこにあるのか、そしてリソースがどのように構成されているのかを知らなくても、大量のコンピューティング・リソースやストレージ・リソースにアクセスすることができます。ここで大きな役割を果たすのは、ご想像のとおり Linux です。この記事を読んで、クラウド・コンピューティングについて、そして雲の向こうにどうしてペンギンがいるのか (インターネットの向こうになぜ Linux が必要なのか) を理解してください。

クラウド・コンピューティングに関する最新の developerWorks のコンテンツへのリンクを「参考文献」セクションに新たに追加しましたのでご参照ください (編集者より)

W. David Ashley, Senior IT Specialist, IBM

David Ashley は 25 年以上の IT 経験を持ち、組み込みデバイスから大規模な IBM メインフレームのインストールに至るまで、さまざまなシステムに取り組んできました。これまで IT インストラクター、開発チームのリーダー、システム・アーキテクト、システム管理コンサルタント、そしてデータベース・インテグレーターとして活躍してきた彼は、現在 IBM Lab Services で System p プロジェクトのコンサルタントを務める傍ら、余暇にはオープンソースの Open Object Rexx プロジェクトに貢献しています。



David Boutcher, Former Senior Technical Staff Member, IBM

David Boutcher は 1986年から最近まで、IBM Linux Technology Center のシニア・テクニカル・スタッフ・メンバーとして IBM 開発研究所に勤務し、さまざまなオペレーティング・システムに携わってきました。彼が専門としていた分野は、通信および分散コンピューティングです。



2009年 2月 11日 (初版 2008年 9月 10日)

クラウド・コンピューティングの特徴の 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 をインストールできるようになります。

自動化ソリューションを作成し、使用するためのステップは以下のとおりです。

  1. AutoYaST ファイルを構成する
  2. DHCP/BOOTP および TFTP サーバーを構成する
  3. HMC lpar_netboot コマンドを使用する
  4. -g パラメーターを使用して lpar_netboot を自動化する
  5. 自動化ソリューションを再利用する

ステップ 1. AutoYaST ファイルを構成する

SUSE Linux では、AutoYaST.xml という名前の XML 構成ファイルを使用してオペレーティング・システムのインストールを制御します。デフォルトでは、毎回 AutoYaST を使用するたびに、まったく同じ構成のシステムがインストールされるので、それぞれの構成に個別の AutoYaST ファイルが確実に用意されることになります。例えば、Web サーバー用の AutoYaST ファイルと、MySQL サーバー用の AutoYaST ファイルがあるといった具合です。その一方、IP アドレスとホスト名が異なるだけのサーバー用に複数の AutoYaST ファイルを構成して管理するとなると厄介で、時間もかかります。

  1. IP アドレスとホスト名を DHCP サーバーから取得するようにカスタマイズした AutoYaST ファイルを作成するには、SUSE インストール CD から AutoYaST ファイルをコピーし、コピーしたファイルを以下のように変更します。
  2. 標準 AutoYaST ファイルは DHCP を使用するようにセットアップされています。そこで、ネットワーク・セクションを変更して、オペレーティング・システムの初期インストールにのみ DHCP が使用されるようにします。ホスト名が割り当てられているネットワーク・セクションが絶対にないことを確認してください。ホスト名が割り当てられている場合には、そのセクション全体を除去します。
  3. 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)

この記事の「ダウンロード」セクションにある 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 に物理イーサネット・アダプターが割り当てられている場合、この引数は必要ありません。


ステップ 5. 自動化ソリューションを再利用する

これで、クラウド環境の LPAR を簡単に管理できる構成が完成しました。新しい LPAR を導入するには、以下のステップに従います。

  1. HMC で LPAR を作成します。
  2. HMC SSH インターフェースにログインして lpar_netboot を実行し、LPAR の MAC アドレスを判別します。
  3. 新しい LPAR の情報で dhcpd.conf ファイルを再構成します。
  4. DHCP サーバーを停止してから再起動し、dhcpd.conf の変更を有効にします。
  5. もう一度 HMC にログインして lpar_netboot を実行し、LPAR にオペレーティング・システムをインストールします。

後はオペレーティング・システムのインストールが完了するのを待つだけです。インストールが完了すると、クラウド環境に新しい LPAR が加わり、LPAR にロードするプロセスを受け入れられる状態になっています。


ダウンロード

内容ファイル名サイズ
Code for this articleautoinstall.zip2KB

参考文献

学ぶために

製品や技術を入手するために

  • developerWorks から直接ダウンロードできる IBM ソフトウェアの試用版を使用して、Linux で次の開発プロジェクトを構築してください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux, AIX and UNIX
ArticleID=357308
ArticleTitle=Linux クラウドの自動インストール
publish-date=02112009