Thursday Aug 09, 2007

N1 SPS 6.0 がリリース

N1 SPS (Sun N1 Service Provisioning System)の新しいバージョン6.0が出たみたいですね。N1関係の仕事から離れてしばらく経つので知らな かったのですが、今朝いくつかブログを読んで知りました。
今回のリリースでは SPS Modeler という部分で NetBeans プラグインが提供されているみたいです。SPS 自体にも多くのプラグインがあるわけですがこれを作るのは大変だなぁと当時思っていた記憶があります。NetBeans プラグインが提供されたことでずいぶん楽になるのではないでしょうか。

以前のバージョン、5.Xから大きく変わっているようですが、以前書いたブログを読んでいただくと SPS はだいたいこんなものというのは理解できると思います。

Thursday Nov 17, 2005

「N1 SPS を使ってみよう」シリーズ

N1 SPS の OS プロビジョニングは一度設定してしまうととっても便利です。管理コンソールから複数台のマシンに一気に OS をインストールすることができます。他のプロジェクトで複数のサーバーマシンに何回も OS をインストールしないといけない作業があるのですが、私はこの N1 SPS を実際に使って管理しています。すご~く楽チンです!

OS Provisioning by using CLI

さて今回はコマンドラインから OS のプロビジョニングをしてみましょう。前にも書いたようにユーザーインターフェースの管理コンソールから出来ることはすべてコマンドラインからも行うことができます。基本的にはプラグインの提供するプランに変数セット (Variable Set) を与えて実行するだけです。

プラグインをインポートする - plg.p.add
# cr_cli -cmd plg.p.add \\
	-path /tmp/com.sun.n1osp_2.0.jar
注意: -u admin -p admin は省略しています。

1. OSP Control Server を作成する - NM:/com/sun/n1osp/untyped/Service-create
pe.p.run はプランを実行するコマンドです。プランID(PID)で指定しているのは NM:/com/sun/n1osp/untyped/Service-create というプラグインが持っているプランです。今回は変数セットは与えていません。ターゲットは masterserver です。masterserver 上に OSP Control Server が作成されます。
# cr_cli -cmd pe.p.run -u admin -p admin \\
	-PID NM:/com/sun/n1osp/untyped/Service-create \\
	-tar H:NM:masterserver \\
	-comp + -vs + -pto 300 -nto 300

ここで仮想ホスト masterserver-osp が作成されます。以後 OSP Control Server に対しての処理をする場合は masterserver ではなく、masterserver-osp に対して行います。

2. Subnet を作成する - NM:/com/sun/n1osp/untyped/Subnet
プランID(PID)で指定しているのは NM:/com/sun/n1osp/untyped/Subnet です。今回は変数セットを作成します。mysubnet という変数セット名で作成します。変数には次のような値を入れます。
# cr_cli -cmd cdb.vs.add \\
	-comp NM:/com/sun/n1osp/untyped/Subnet \\
	-name mysubnet \\
	-u admin -p admin \\
	-vars "installPath=xxx.xxx.19.0;\\
	       mask=255.255.255.0;\\
	       gateway=xxx.xxx.19.254;\\
	       host_interface=dmfe0;\\
	       host_address=xxx.xxx.19.1"

mysubnet を与えてプランを実行します。サブネットを作るのは OSP Control Server 上なのでここではターゲットを masterserver-osp にします。
# cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/untyped/Subnet-create \\
	-tar H:NM:masterserver-osp \\
	-comp + -vs mysubnet -pto 30 -nto 10


3. JET Solaris Image Server を作成する - NM:/com/sun/n1osp/untyped/Jet-create
JET サーバーを作成します。ここでのターゲットは masterserver です。
# cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/untyped/Jet-create \\
	-tar H:NM:masterserver \\
	-comp + -vs + -pto 300 -nto 300

これで仮想ホスト masterserver-jet が作成されます。以後 JET に関する命令はこの masterserver-jet に投げてあげます。

4. Solaris のインストールイメージをインポートする - NM:/com/sun/n1osp/untyped/SolarisImage-import
JET サーバーに Solaris のインストールイメージをインポートしましょう。Solaris 10 の入ったメディアを用意してそのディレクトリを変数セットで指定します。
# cr_cli -cmd cdb.vs.add \\
	-comp NM:/com/sun/n1osp/untyped/SolarisImage \\
	-name solaris10 \\
	-vars "version=10;\\
	      architecture=sparc; \\
	      image_path=/export/install/solaris10; \\
              image_subnet_addr=xxx.xxx.19.1;\\
	      image_subnet_mask=255.255.255.0;\\
	      media_src=/cdrom"

この例では solaris10 という変数セットを作っています。メディアは /cdrom にあってそれを /export/install/solaris10 にコピーしてインストールイメージを作成しています。
この変数セットを与えてインポートを実行します。ターゲットは masterserver ではなく仮想ホストの masterserver-jet です。時間がかかる場合があるのでタイムアウトにならないように pto の値は大きめにします。
# cat solaris-profile | cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/untyped/SolarisImage-import /
	-tar H:NM:masterserver-jet
	-comp + -vs solaris10 \\
	-pto 300 -nto 300


5. Solaris のインストールプロファイルを作成する - NM:/com/sun/n1osp/untyped/SolarisImage-create-profile
ここもインストールのイメージをインポートした時と同じですがいくつか余分に変数を与える必要があります。
この画面の管理コンソールを見てみましょう。変数セットの下にもいくつか入力フィールドがありますね。これらの値は cr_cli を実行した時に与えることができます。次の例では solaris-profile というファイルにあらかじめ値を入れておいて cr_cli の実行時に与えています。次の値はそれぞれ Profile Name、Profile Description、JET Module Name(s) の各フィールドに対応しています。

# cat solaris-profile
standard
Standard Solaris
base_config spsra
#

# cat solaris-profile | cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/untyped/SolarisImage-create-profile \\
	-tar H:NM:masterserver-jet \\
	-comp + -vs solaris10 \\
	-pto 300 -nto 300


6. ターゲットを作成する- NM:/com/sun/n1osp/targets/SunALOM-create
さ〜ここまできたらあと少しです。ターゲットを作ってみましょう。ALOM のサーバー、例えば v210 が手元にありますが、それで作ってみます。NM:/com/sun/n1osp/targets/SunALOM-create を使います。
変数セットを作ります。MAC アドレスや IP アドレス、それに ALOM の IP アドレスとユーザーIDを指定します。
# cr_cli -cmd cdb.vs.add \\
	-comp NM:/com/sun/n1osp/targets/SunALOM \\
	-name myserver1 \\
	-vars "installPath=myserver1;\\
		description=My Server1;\\
		ethernet_mac_address=xx:xx:xx:xx:xx:xx;\\
		ethernet_ip_address=xx.xx.xx.95;\\
		ethernet_netmask=255.255.255.0;\\
		architecture=sun4u;\\
		kernel_arch=sun4u;\\
		disk_size=20GB;\\
		alom_ip_address=xx.xx.xx.103;\\
		alom_access_userid=admin;"

ここでも次のようなファイルを作り変数をさらに追加してあげます。ここでは ALOM のパスワードを指定します。
# cat target-v210
true
alom_no_password
false
dummy
#
# cat target-v210 | cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/targets/SunALOM-create \\
	-tar H:NM:masterserver-osp \\
	-comp + -vs myserver1 -pto 30 -nto 10


7. インストールを実行しよう - NM:/com/sun/n1osp/autogen-masterserver-jet/provision/...
すべて準備が整いましたのでインストールを試してみましょう。まずは変数セットを作ります。 /com/sun/n1osp/autogen-masterserver-jet/provision/ 以下にコンポーネントが 出来ているはずです。どの OS のプロファイルを作ったかで名前が変わってきます。 今回の例ではバージョン名、プラットフォーム名、プロファイル名から Solaris10__sparc.standard という名前になっていますね。ここでの変数は主に JumpStart に関してのものです。
実際のプランは SolarisProfile-provision-start-Solaris10__sparc.standard です。これを先ほど作ったターゲットの仮想ホスト myserver1-target に対して実行してあげます。
# cr_cli -cmd cdb.vs.add \\
	-comp NM:/com/sun/n1osp/autogen-masterserver-jet/provision/Solaris10__sparc.standard \\
	-name myserver1_val \\
	-vars "profile_swap_base_config=2000;\\
		profile_cluster_base_config=SUNWCall"
# cr_cli -cmd pe.p.run \\
	-PID NM:/com/sun/n1osp/autogen-masterserver-jet/provision/\\
		SolarisProfile-provision-start-Solaris10__sparc.standard \\
	-tar H:NM:myserver1-target \\
	-comp + -vs myserver1_val \\
	-pto 60 -nto 60


これでインストールが開始されるはずです。

Wednesday Nov 16, 2005

OS Provisioning by Sun N1 Service Provisioning System

Sun N1 Service Provisioning System では OS のインストールも出来てしまいます。これは N1 SPS で独自に実装した新しい技術ではなく、すでにある既存のリモートインストールテクノロジを組み合わせて SPS の枠組みで動くようにしたものと考えてください。

Solaris, Windows それと Linux では次のテクノロジを使います。

- Solaris: JumpStart Enterprise Toolkit (JET)
- Windows: Remote Installation System (RIS)
- Linux: Kick Start

今回は OS プロビジョニングの流れを Solaris を例にして簡単に説明します。

詳しくは以下のドキュメントを見てください。

Sun N1 Service Provisioning System User's Guide and Release Notes for the OS Provisioning Plug-In 2.0

Solaris OS プロビジョニングには用意するマシンは1台で大丈夫です。OS プロビジョニング用のサーバーとしては Solaris 10 は今のところマスターサーバーとしてはサポートしていませんので Solaris 9 がいいですね。マスターサーバーとリモートエージェントをインストールしておいてください。ディスクは Solaris のインストールイメージをこのマシン上に用意しますので多いほうがいいです。

ドキュメントと少し違うかもしれませんが私は次のような手順で実行しています。

0. マスターサーバー、リモートエージェントが正しく動いているか確認します

1. OSP Control Server を作成します

クリックするだけです。ターゲットはそのマシン、つまり masterserver を指定します。

2. OSP Subnet を作成します

そのマシンのあるサブネットを指定します。DHCP で使います。

3. JET Solaris Image Server を作成します

ここでもターゲットはそのマシン、つまり masterserver を指定します。

この段階で OSP Control Server と JET Server は masterserver 上に作られたことになります。JET Server が出来たらそこに Solaris にインストールイメージを import しましょう

4. Solaris イメージを import します。

Solaris のイメージがある場所を指定します。

5. インストール用のプロファイルを作成します

さてこれでサーバー側の準備が整いました。JET サーバーもあるし、あとはクライアントを追加するだけですね。

6. ターゲットを作成します

ここはターゲットによって項目が違いますが ALOM などを搭載しているマシンはコンソールから OS のプロピジョニングが一発で出来ます。ALOM のマシンであれば Sun ALOM Targets というところから Create します。ALOM の IP アドレス、パスワードを入力して自動的にインストールが開始するようにします。

Solaris x86 も大丈夫です。一般的な PC ならば Other Remotely Managed Targets を選びましょう。この場合は PXE ブートになります。また旧式の SPARC マシン、たとえば Ultra 30 とか 60 ですね、この場合は boot net で起動できるように Generic Target を選びましょう。

Monday Nov 14, 2005

Adding plug-ins for Sun N1 Service Provisioning System

しばらく間があいてしまいましたが Sun N1 Service Provisioning System に関してはあと少し書きたいことが残っています。プラグインに関してです。

単純なホストの追加やファイルの配備に関してはすでにお話しました。実際のアプリケーションの配備は Sun N1 Service Provisioning System のコアの部分を利用したプラグインが用意されています。次のアプリケーションに対するプラグインが用意されています。

アプリケーション

  • Sun Java. System Web Server 6.1
  • Sun Java. System Application Servers 8.1
  • BEA WebLogic 6, 7, and 8
  • IBM WebSphere 5.1
  • Oracle 10g Application Server
  • Oracle 9i and 10g Database
  • OS Related: Solaris Package , Patch and Container, Windows 2000 IIS , COM, COM+ applications, Linux RPM files

OS プロビジョニング

  • Solaris 9, 10 (SPARC and X86 platform editions)
  • Red Hat Linux Advanced Server 3
  • Microsoft Windows 2000 Server, 2000 Advanced Server

今回はこれらのプラグインを使えるようにしてみます。

1. 管理コンソールにログインします。

2. 左側の Administration タブから Plug-ings をクリックします



3. プラグインの jar を指定して import します。

この例では Solaris プラグインの jar を import しています。



Common Tasks

プラグインが正しく import されると管理コンソールの Common Tasks 以下に Solaris というタブが作成されます。この例では Solaris と OS Provisioning のプラグインを追加してみました。このように必要に応じてプラグインをインポートして使うことができます。




CLI でインポートするには

ちなみに CLI を使うともっと簡単に import ができます。plg.p.add を使って次のようにします。

   # /opt/SUNWn1sps/N1_Service_Provisioning_System_5.1/cli/bin/cr_cli \\
       -cmd plg.p.add \\
       -path /tmp/com.sun.solaris_3.0.jar \\
       -u admin -p admin

それぞれのプラグインのドキュメントは以下にありますので参照して下さい。

Wednesday Nov 02, 2005

File deployment by Sun N1 Service Provisioning System CLI

今回は CLI でファイルを配備してみますね。

基本的にはブラウザ上で行ったことをそのまま CLI で実行してしまえばいいわけです。

コンポーネントを作成する - cdb.rsrc.ci

次のコマンドでコンポーネントを作成しましょう。TestComponent2 と名付けました。-src でファイル名を指定しています。
-type では system#file を指定しています。

# ./cr_cli -cmd cdb.rsrc.ci -dst TestComponent2 \\
        -src /etc/nsswitch.conf \\
        -type system#file \\
        -desc "test component for CLI" \\
        -u admin -p admin

コンポーネントを見てみる - cdb.c.co

ちゃんと作成されたかどうか TestComponent2 の中身を見てみましょう。次のコマンドで見ることができます。XML で定義されているんですね。

# ./cr_cli -cmd cdb.c.co -comp NM:TestComponent2 \\
        -u admin -p admin
<?xml version="1.0" encoding="UTF-8"?>
<!-- generated by N1 SPS -->
<component xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  name='TestComponent2' version='5.1' description='test component for CLI'
  xsi:schemaLocation='http://www.sun.com/schema/SPS component.xsd'
  xmlns='http://www.sun.com/schema/SPS'>
        <extends>
                <type name='system#file'></type>
        </extends>
        <varList>
                <var name='installName' default='nsswitch.conf'></var>
        </varList>
        <resourceRef>
                <resource name='/TestComponent2' version='1.0'></resource>
        </resourceRef>
</component>
#

コンポーネントの一覧を表示する - cdb.c.la

このシステムにはどのような他のコンポーネントがあるでしょうか、リストしてみましょう。ブラウザで作成した TestComponent も表示されていることがわかりますね。

# ./cr_cli -cmd cdb.c.la -u admin -p admin
|---------------------------------------------|---------------|-----|----------|
|ID                                           |Name           |Version|Label     |
|---------------------------------------------|---------------|-----|----------|
|129158028152-1130558652676-01188-1717322651  |/TestComponent |1.0  |          |
|129158028152-1130734168334-01670-0577064252  |/TestComponent2|1.0  |          |
|129158028152-1124850787227-00355-1157587912  |/system/Core Services SS|2.0  |          |
|129158028152-1124850771469-00343-0775963935  |/system/CR Simple Base CT|1.1  |          |
|129158028152-1124850774858-00345-1770043212  |/system/DIRECTORY CT|1.1  |          |
|129158028152-1124850773323-00344-1134805142  |/system/FILE CT|1.1  |          |
|129158028152-1124850781474-00350-1104700840  |/system/Generic Container CT|1.1  |          |
|129158028152-1124850785498-00354-1361222937  |/system/plugin-core.jar|2.0  |          |
|129158028152-1124850782525-00351-0167805567  |/system/Symlink CT|1.1  |          |
|129158028152-1124850761635-00330-0250646304  |/system/System Service SS|1.0  |          |
|---------------------------------------------|---------------|-----|----------|
# 

変数セットを作成する - cdb.vs.add

さて前回ブラウザ上で行った変数を作ってみます。cdb.vs.add を使って -vars で変数を指定します。

# ./cr_cli -cmd cdb.vs.add -comp NM:TestComponent2 \\
        -name MyVal2 \\
        -vars "installPath=/tmp/cli/" \\
        -u admin -p admin
ID: 129158028152-1130734298884-01675-0763128639
Name: MyVal2
Component:
 |---------------------------------------------|---------------|-----|----------|
 |ID                                           |Name           |Version|Label     |
 |---------------------------------------------|---------------|-----|----------|
 |129158028152-1130734168334-01670-0577064252  |/TestComponent2|1.0  |          |
 |---------------------------------------------|---------------|-----|----------|
Variables:
 |------------------------|------------------|------------------|------------------|----------|
 |Variable Name           |Variable Prompt   |Default Value     |Override Value    |Read-Only |
 |------------------------|------------------|------------------|------------------|----------|
 |installName             |                  |nsswitch.conf     |nsswitch.conf\*    |false     |
 |installPath             |                  |:[container:installPath]|/tmp/cli/         |false     |
 |installUser             |                  |                  |\*                 |false     |
 |installGroup            |                  |                  |\*                 |false     |
 |installPermissions      |                  |                  |\*                 |false     |
 |installDeployMode       |                  |REPLACE           |REPLACE\*          |true      |
 |installDiffDeploy       |                  |TRUE              |TRUE\*             |false     |
 |overrideRsrcInstallPath |                  |                  |\*                 |false     |
 |------------------------|------------------|------------------|------------------|----------|
# 

プランを作成する - pdb.p.genplan

ブラウザで行った時は install のところの run リンクをクリックしただけでよかったのですが CLI で行うときはひと工夫必要です。

  1. コンポーネントからプランを生成する
  2. プランのパスを変えてチェックインする
の手順が必要となります。

まずはコンポーネントからプランを作成してみましょう。XML で出力されます。

# ./cr_cli -cmd pdb.p.genplan -componentID NM:TestComponent2 \\
        -pt install -pn default \\
        -u admin -p admin
<?xml version="1.0" encoding="UTF-8"?>
<!-- generated by N1 SPS -->
<executionPlan xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  name='TestComponent2-1130734398230' version='5.1'
  xsi:schemaLocation='http://www.sun.com/schema/SPS plan.xsd'
  xmlns='http://www.sun.com/schema/SPS' path='/system/autogen'>
        <simpleSteps>
                <install blockName='default'>
                        <component name='TestComponent2' path='/' version='1.0'></component>
                </install>
        </simpleSteps>
</executionPlan>
# 

これがプランの実体なのですが一カ所 path='/system/autogen' という箇所はシステムに使うパスなので
このままだとプランとしてチェックインできません。ここを path='/' に変更して XML ファイルに保存
します。保存した XML ファイルをチェックインします。

プランをチェックインする - pdb.p.ci

/tmp/1.xml として保存してあったプランをチェックインします。

# ./cr_cli -cmd pdb.p.ci -path /tmp/1.xml -u admin -p admin
ID: 129158028152-1130734484294-01682-0291829572
Name: /TestComponent2-1130734452260
Version: 1.0
Description: 
Checkin Date: 10/31/2005 13:54
Checked In By:
 |---------------------------------------------|---------------|
 |ID                                           |Username       |
 |---------------------------------------------|---------------|
 |010010001024-0000000000000-00001-0000000001  |admin          |
 |---------------------------------------------|---------------|
Number Of Steps: 1
Category: un-categorized
Hidden: false
# 

さて準備完了です。実行してみましょう。

プランを実行する - pe.p.run

ここではプランIDを指定します。プランIDとはどこでしょう…一つ前の手順でプランをチェックインしたときに ID と
表示されている 129158028152-1130734484294-01682-0291829572 を指定します。

ターゲット(対象マシン)は host3 です。変数セットは MyVal2 です。

# ./cr_cli -cmd pe.p.run -PID 129158028152-1130734484294-01682-0291829572 \\
        -tar H:NM:host3 \\
         -comp + -vs MyVal2 \\
        -pto 30 -nto 10 \\
        -u admin -p admin
129158028152-1130734672754-01687-0934762640
# 

実行状況を見てみましょう。ここでは 129158028152-1130734672754-01687-0934762640 を指定して、
pe.p.lo で見ればよかったですよね。

#  ./cr_cli -cmd pe.p.lo -ID 129158028152-1130734672754-01687-0934762640 -u admin -p admin
10/31/2005 13:57 Plan/Preflight Started:
 Plan:
  |---------------------------------------------|---------------|-------|
  |ID                                           |Name           |Version|
  |---------------------------------------------|---------------|-------|
  |129158028152-1130734484294-01682-0291829572  |/TestComponent2-1130734452260|1.0    |
  |---------------------------------------------|---------------|-------|
 Is Preflight Only: false
 Plan Runner User:
  |---------------------------------------------|---------------|
  |ID                                           |Username       |
  |---------------------------------------------|---------------|
  |010010001024-0000000000000-00001-0000000001  |admin          |
  |---------------------------------------------|---------------|
10/31/2005 13:57 Step Started: preflight
...
10/31/2005 13:57 Plan/Preflight Completed
# 

無事に完了したことがわかります。

このように N1 Service Provisioning System では強力な CLI が用意されています。是非使ってみて下さい。
CLI の詳細は


を参考にしてください。

Tuesday Nov 01, 2005

Preparing Hosts by Sun N1 Service Provisioning System CLI

今回はホストの追加をコマンドラインからやってみますね。ブラウザ上での管理もたしかに便利ですが CLI にはかないません。SPS は CLI が充実しています。

ホストを表示する - hdb.h.la

まず今の状態でどのホストが登録してあるかみてみましょう。hdb.h.la コマンドを使います。

# ./cr_cli -cmd hdb.h.la -u admin -p admin
|---------------------------------------------|--------------------|
|ID |Name |
|---------------------------------------------|--------------------|
|010010001024-0000000000000-00001-0000000005 |masterserver |
|129158028152-1130409199648-00873-1064499646 |host2 |
|---------------------------------------------|--------------------|

マスターサーバーにホスト2が登録されていることがわかりますよね。では同じホストでよいので host2 を一度削除して host3 という名前で登録してみましょう。

リモートエージェントを削除する - hdb.a.del

まず host2 のリモートエージェント削除します。

# ./cr_cli -cmd hdb.a.del -ID NM:host2:RA -u admin -p admin

この時点でもまだ host2 はホストとして表示されますね。

# ./cr_cli -cmd hdb.h.la -u admin -p admin
|---------------------------------------------|--------------------|
|ID |Name |
|---------------------------------------------|--------------------|
|010010001024-0000000000000-00001-0000000005 |masterserver |
|129158028152-1130409199648-00873-1064499646 |host2 |
|---------------------------------------------|--------------------|


ホストを削除する - hdb.h.del

リモートエージェントを削除してから実際のホストを削除します。

# ./cr_cli -cmd hdb.h.del -ID NM:host2 -u admin -p admin

この時点で host2 がなくなりましたね。
# ./cr_cli -cmd hdb.h.la -u admin -p admin
|---------------------------------------------|--------------------|
|ID |Name |
|---------------------------------------------|--------------------|
|010010001024-0000000000000-00001-0000000005 |masterserver |
|---------------------------------------------|--------------------|

さてでは同じホストを今度は host3 という名前で登録してみます。

ホストを追加する - hdb.h.add

# ./cr_cli -cmd hdb.h.add -name host3 -desc "this is host3" -tID NM:system#crhost -u admin -p admin
ID: 129158028152-1130565378973-01386-0708930651
Name: host3
Description: this is host3
OS: Host is not prepared
OS Version: Host is not prepared
OS Architecture: Host is not prepared
Last Prepared: Host is not prepared
Virtual: false
Hidden: false
Type ID: 129158028152-1124850749364-00183-0360099946
Attributes:
<Table is empty>
Applications:
<Table is empty>

リモートエージェントを追加する - hdb.a.add

追加されたホストにリモートエージェントを追加します。-type で RA を指定します。親には -pID でマスターサーバーを指定します。ホストの指定には -ip オプションで IP アドレスを指定します。

# ./cr_cli -cmd hdb.a.add -hID NM:host3 -type RA -pID NM:masterserver:MS -ip xxx.xxx.xxx.xxx -port 1131 -
conn raw -u admin -p admin
ID: 129158028152-1130565458326-01389-0549335232
Parent ID: 010010001024-0000000000000-00001-0000000006
Host ID: 129158028152-1130565378973-01386-0708930651
Type: RA
IP Address: xxx.xxx.xxx.xxx
Port: 1131
Parameters:
Connection: raw


ホストを準備する - pe.h.prep

ホストを準備する必要がありましたよね。pe.h.prep でホストを準備します。

# ./cr_cli -cmd pe.h.prep -tar NM:host3 -u admin -p admin
129158028152-1130565784283-01536-1083749387

実行中の状態を表示する - pe.p.lo

上のコマンドが数字を返した時点ではまだタスクが終了したかどうかというのはわかりません。上のコマンドのあとに何か数字がでてきましたね。これは実行タ スクについた ID です。この ID を使って実行中の状態を調べることができます。

# ./cr_cli -cmd pe.p.lo -ID 129158028152-1130565784283-01536-1083749387 -u admin -p admin
10/29/2005 15:03 Plan/Preflight Started:
Plan:
|---------------------------------------------|---------------|-------|
|ID |Name |Version|
|---------------------------------------------|---------------|-------|
|010010001013-0000000000000-00001-0000000009 |/system/prepHostsPlan|1.0 |
|---------------------------------------------|---------------|-------|
Is Preflight Only: false
Plan Runner User:
|---------------------------------------------|---------------|
|ID |Username |
|---------------------------------------------|---------------|
|010010001024-0000000000000-00001-0000000001 |admin |
|---------------------------------------------|---------------|
10/29/2005 15:03 Step Started: preflight AcquireHost(129158028152-1130565784490-01539-2080758315) on host3
10/29/2005 15:03 Step Started: preflight deploySystemServices(129158028152-1130565784542-01541-1409396177) on host3
10/29/2005 15:03 Step Completed: preflight AcquireHost(129158028152-1130565784490-01539-2080758315) on host3
10/29/2005 15:03 Step Started: preflight install(129158028152-1130565786323-01545-1730235530) on host3
10/29/2005 15:03 Step Started: preflight install(129158028152-1130565786569-01554-0749024993) on host3
10/29/2005 15:03 Step Started: preflight deployResource(129158028152-1130565786813-01559-0011217956) on host3
10/29/2005 15:03 Step Completed: preflight deployResource(129158028152-1130565786813-01559-0011217956) on host3
10/29/2005 15:03 Step Completed: preflight install(129158028152-1130565786569-01554-0749024993) on host3
10/29/2005 15:03 Step Started: preflight createSnapshot(129158028152-1130565786932-01561-1324588620) on host3
10/29/2005 15:03 Step Completed: preflight createSnapshot(129158028152-1130565786932-01561-1324588620) on host3
10/29/2005 15:03 Step Completed: preflight install(129158028152-1130565786323-01545-1730235530) on host3
10/29/2005 15:03 Step Completed: preflight deploySystemServices(129158028152-1130565784542-01541-1409396177) on host3
10/29/2005 15:03 Step Started: actual AcquireHost(129158028152-1130565784513-01540-1050717141) on host3
10/29/2005 15:03 Step Completed: actual AcquireHost(129158028152-1130565784513-01540-1050717141) on host3
10/29/2005 15:03 Step Started: actual deploySystemServices(129158028152-1130565784566-01542-1576224263) on host3
10/29/2005 15:03 Step Started: actual install(129158028152-1130565788340-01572-1809520856) on host3
10/29/2005 15:03 Step Started: actual install(129158028152-1130565788626-01577-1100466638) on host3
10/29/2005 15:03 Step Started: actual deployResource(129158028152-1130565788860-01582-2132012448) on host3
10/29/2005 15:03 Step Completed: actual deployResource(129158028152-1130565788860-01582-2132012448) on host3
10/29/2005 15:03 Step Completed: actual install(129158028152-1130565788626-01577-1100466638) on host3
10/29/2005 15:03 Step Started: actual createSnapshot(129158028152-1130565790722-01594-1486474193) on host3
10/29/2005 15:03 Step Completed: actual createSnapshot(129158028152-1130565790722-01594-1486474193) on host3
10/29/2005 15:03 Step Completed: actual install(129158028152-1130565788340-01572-1809520856) on host3
10/29/2005 15:03 Step Completed: actual deploySystemServices(129158028152-1130565784566-01542-1576224263) on host3
10/29/2005 15:03 Plan/Preflight Completed
#

Plan/Preflight Completed と出ました。無事にタスクが終わったことになります。

Monday Oct 31, 2005

Simple deployment example on Sun N1 Service Provisioning System

ホストも準備できたことですし、簡単なファイルの配備をやってみましょう。やることの概要は

1. コンポーネントを作成する
ファイルは masterserver (ホスト1のリモートエージェント)から取得する。ファイルは /etc/nsswitch.conf です。

2. コンポーネントに変数を渡してホスト2に配備する
この場合の変数とはファイルの配備先のディレクトリ名です。配備先は /tmp にします。

です。

左側のナビゲーションメニューから Components を選びます。component の入力フィールドには TestComponent、type には system#file を選びましょう。その行の一番右側の create リンクをクリックします。



コンポーネントのファイルを選択しましょう。import from host に masterserver と入力します。refresh で masterserver にあるファイル一覧が表示されます。/etc の下の nsswitch.conf を選びます。この状態で一番したの check in selected item... ボタンを押します。



無事にこれで TestComponent と呼ばれるコンポーネントが作成されました。



このコンポーネントのプロパティを見てみましょう。TestComponent をクリックします。次のような画面が表示されてこのコンポーネントに必要な変数が表示されます。installPath にはなにやら変な値が入っていますね。ここは配備時に変数を与えてやる必要があります。

実際に配備をしてみましょう。run というリンクをクリックします。



ここが実行画面です。target host には host2 を入力します。ここは対象となるサーバーを何台書いてもかまいませんせんし、ホストセットにまとめたものを指定してもかまいません。plan parameters に variable settings というものがありますね。ここで先ほどの installPath の値を設定します。select from list... をクリックしてみましょう。



ここで新しい "variable set" を作成します。SetName には MyVal とつけて、installPath には /tmp を入れましょう。save を選んで保存します。




今度は MyVal というものが variable settings で選択されていることがわかりますね。これで準備完了です。



この画面の一番下の run plan (includes preflight) というボタンを押します。



前に紹 介した進歩状況を表す画面が出てきます。実行が終わって無事完了したようです。



ホスト2の /tmp ディレクトリの中を覗いてみましょう。nsswitch.conf というファイルが新しく作成されているはずです。

Friday Oct 28, 2005

Preparing Hosts on Sun N1 Service Provisioning System

ホストを追加していきましょう。左側のメニューから「ホスト(Host)」を選びます。すると右側の区画には次のようなホストのリストが表示されます。



まだホストは masterserver しかありません。この masterserver はデフォルトで作成されます。これはホスト1で すね。ここにはリモートエージェントも含まれるはずですがこの時点ではまだ設定されていません。masterserver のリンクを選んでこのホストを編集してリモートエージェントを追加してみましょう。

マスターサーバーのリモートエージェントを追加する



編集 (Edit) 画面はこのようになります。次の手順でホスト1に含まれるリモートエージェントがホストとして追加されます。

1. "include remote agent on this physical host" をクリック
2. "connect type:" は TCP/IP を選択
3. "ip address or name:" には "host1" を入力
4. "port:" にはデフォルトの値 1131 を入力
5. Save ボタンを押します

リモートエージェントの準備

青で書きましたが OS、OS version、OS architecture はまだ "not available, host is not prepared" とありますね。これはまだリモートエージェントと通信していないからでホストを追加後にリモートエージェントと通信をして情報を取得します。準備中は次の ようなダイアログが表示されます。





さて準備が終わったようですね。前の画面はどのように変わっているでしょうか。次のようにリモートエージェントの情報が表示されています。






ホスト2のリモートエージェントを追加する


別のホストで動いているリモートエージェントも同じように追加することができます。

ホストリスト

無事に2つのリモートエージェントを登録しました。ホストは次のようになります。ホスト2は Solaris 9 であることがわかりますね。masterserver の横には ms,ra と表示されています。これはマスターサーバー(ms)、リモートエージェント(ra) という意味です。



これでホストに関しては準備が出来ました。次回はコンポーネントを作って配備を試してみます。

Thursday Oct 27, 2005

Exploring admin menu on Sun N1 Service Provisioning System


マスターサーバーの http://ホスト1:8080 にアクセスしてインストール時に入力したパスワードでログインします。管理者IDは admin です。みなさんの前には SPS の中核、管理コンソールが表示されたと思います。今回はこの管理コンソール左側のナビゲーションメニューを見ていきましょう。以下は主に使う項目を書いています。

コンポーネント (Components)

コンポーネントは配備するソフトウェアのひとつの単位です。コンポーネントはマスターサーバーをリポジトリとしてバージョン管理されます。この時点ではま だどのサーバーに配備されるかとかどの場所に配備されるかとかはデフォルトの値でしか持っていません。

プラン (Plans)

実際にコンポーネントを配備するのがプランです。プランでは

  • どこのサーバーに配備するのか (ターゲットと呼びます)
  • デフォルトの値を上書きする (たとえばインストール場所とかを指定する)

を行い実際にターゲットのサーバーに配備 (プランを実行 - Run Plan) します。インストール用のプランもありますし、逆にアンインストールのプランもあります。

実行履歴 (Run History)

ここが実は N1 SPS で一番気に入っている部分です。プランを実行したらずっと管理コンソールの進歩状況を見て待ち続けているのではなく他のプランを実行できます。複数の実行 状況をここで確認することができます。

比較 (Comparisons)

ターゲットにどのようなコンポーネントが配備されているのかを比較することができます。コンポーネントのどのバージョンが配備されているかをターゲットと ターゲットで調べることができます。

ホスト (Hosts)

リモートエージェントを登録します。物理的なホスト以外にもバーチャルホストと言ってコンポーネントに必要なホストを別名定義することができます。

ホストセット (Host Sets)

ホストをグルーピングして特定のサーバー群を作ることができます。プランのターゲットにはこのホストセットを指定し、一気に複数台へ配備することができます。

ユーザー (Users)

管理ユーザーを追加したり、パスワードの変更を行います。

プラグイン (Plug-Ins)

前にも言いましたが SPS 自体はこのようなコンポーネント管理、プランの実行、ホストの管理、ユーザー管理しか提供しません。それ以外の複雑な処理はプラグインと呼ばれるもので対 処します。それをアドオンしたり削除したりするところです。

ところで「おや??」と思ったかたも多いでしょうね。実はこの管理コンソールはまだ日本語化されていません。今は 5.1 というバージョンですがおそらく次のメジャーアップデートでコンソールががらりと変わり日本語になる予定でいます、しばらくお待ち下さい なのでたぶんこうなるであろうという日本語も交えて説明してみました。

Wednesday Oct 26, 2005

Installing Sun N1 Service Provisioning System for evaluation

では実際にインストールしていってみましょう。評価用ということシンプルにサーバー2台で動かしてみましょう。

ホスト1
  • マスターサーバー
  • リモートエージェント
  • コマンドラインインターフェース

ホスト2
  • リモートエージェント
構成を簡単にするためにマスターサーバー、リモートエージェント、コマンドラインインターフェースを1台にいれてみました。この図 の左、真ん中、右上の GOLDEN SERVER をひとつにした構成です。ホスト1自身でコンポーネントを吸い上げてホスト2に配備します。

ホスト1では次のものをインストールします。
  • cr_cli_solaris_sparc_pkg_5.1.sh : コマンドラインインターフェース (CLI)
  • cr_ms_solaris_sparc_pkg_5.1.sh : マ スターサーバー (MS)
  • cr_ra_solaris_sparc_5.1.sh : リモー トエージェント (RA)
ホスト2では次のものをインストールします。
  • cr_ld_solaris_sparc_5.1.sh : ローカ ルディストリビュータ (LD)
マスターサーバーのインストール

インストーラーはコマンドラインベースのものですがほとんどの質問ではデフォルトの値を受け入れての設定で OK です。SSL を使うかに関しても No を選んで下さい。ただマスターサーバーのインストールでは2点だけインストール前に準備が必要です。

1. マスターサーバーを実行するユーザーを作成しておく

2. /etc/system のパラメーターを変更しておく

これらは

Sun N1 Service Provisioning System 5.1 Installation Guide : 2.  System Requirements for the N1 Service Provisioning System 5.1

を参考にしてください。

コ マンドラインインターフェースのインストール

ここではマスターサーバーのホスト名、ポート番号が必要です

インストール場所

デフォルトでは次の位置にインストールされます。また各サーバーの起動方法は次のようになります。

コンポーネント
デフォルトのイ ンストール場所
起動方法/停止 方法
確認方法
マスターサー バー
/opt/SUNWn1sps/N1_Service_Provisioning_System_5.1/server
bin/cr_server start
bin/cr_server stop
ブラウザで管理コンソールにアクセスします。
デフォルトでは http://ホスト1:8080
リモートエー ジェント
/opt/SUNWn1sps/N1_Service_Provisioning_System/agent
bin/cr_agent start
bin/cr_agent stop
管理コンソールからリモートエージェントの登録をしてみ ます。
コマンドライン インターフェース
/opt/SUNWn1sps/N1_Service_Provisioning_System_5.1/cli
-
% cd bin
% ./cr_cli -cmd hdb.h.la -u admin -p admin
これはホストを表示するコマンドです

Tuesday Oct 25, 2005

Download trial version of Sun N1 Service Provisioning System

評価版をダウンロードして試してみましょう。N1 SPS のページ の次のリンクをクリックします。

   Test drive Sun N1 Service Provisioning System with new trial available now

ここから60日間の評価版をダウンロードすることができます。その中から Java ES を試したように是非あなたの得意なプラットフォームを選びましょう。Solaris SPARC や x86、RedHat Linux もありますし、Windows、SuSE Linux、HP-UX、AIX もあります。

ただ、ここで注意しなければならないとマスターサーバーがサポートしているのは次のプラットフォームだけです。リモートエージェントはさらに多くのプラッ トフォームをサポートしています。
 
マスターサーバー
  • Solaris 8 on SPARC platform, Solaris 9, 10 on SPARC and X86 platforms
  • Red Hat Enterprise Linux Advanced Server 2.1 and 3
  • Microsoft Windows 2000 Server, 2000 Advanced Server
リモートエージェント
  • Solaris 7, 8 on SPARC platforms, Solaris 9, 10 on SPARC and X86 platforms
  • Microsoft Windows Server 2000, Advanced Server 2000
  • Microsoft Windows Server 2003 (Web, Enterprise and Standard Edition)
  • Microsoft Windows Server 2003 x64 edition (Enterprise and Standard edition)
  • Red Hat Linux Advanced Server 2.1 and 3
  • IBM AIX 5.1, 5.2, and 5.3
  • HP-UX 11i
  • SuSE Linux Enterprise 8 and 9
今回は簡単にしてマスターサーバーもリモートエージェントも Solaris SPARC のプラットフォームで試してみましょう。

ダウンロードページから Solaris SPARC 用の zip ファイルと、SPS 5.1 Supplemental, English というのを選びましょう。この zip ファイルにはプラグインとプラグインのドキュメントが入っています。



解凍すると solaris_sparc/ 以下にはマスターサーバー、リモートエージェント、ローカルディストリビュータ、コマンドラインインターフェースのインストールスクリプトがあります。 ローカルディストリビュータは今回は無視してかまいません。
  • cr_cli_solaris_sparc_pkg_5.1.sh : コマンドラインインターフェース (CLI)
  • cr_ld_solaris_sparc_5.1.sh : ローカ ルディストリビュータ (LD)
  • cr_ms_solaris_sparc_pkg_5.1.sh : マ スターサーバー (MS)
  • cr_ra_solaris_sparc_5.1.sh : リモー トエージェント (RA)
プラグインはまだ使いませんが参考までに何が含まれているかというと、次のようなプラグインが含まれています。
  • com.sun.jes6_WS/com.sun.jes6_WS_2.0.jar : Sun Java System Web Server 6.1 プラグイン
  • com.sun.linux/com.sun.linux_1.1.jar : Linux プラグイン、RPM サポート
  • com.sun.n1osp/com.sun.n1osp_2.0.jar : OSP、OS のプロビジョニング
  • com.sun.oracle10g_AS/com.sun.oracle10g_AS_2.0.jar : Oracle 10G Application Server プラグイン
  • com.sun.oracle10g_DB/com.sun.oracle10g_DB_2.0.jar : Oracle 10G DB プラグイン
  • com.sun.oracle9i_DB/com.sun.oracle9i_DB_2.0.jar : Oracle 9i DB プラグイン
  • com.sun.sjsas81/com.sun.sjsas81_2.0.jar : Sun Java System Application Server 8.1 プラグイン
  • com.sun.solaris/com.sun.solaris_3.0.jar : Solaris プラグイン、パッチ、ゾーンサポート
  • com.sun.was/com.sun.was_2.0.jar : WebSphere 5.1 プラグイン
  • com.sun.weblogic/com.sun.weblogic_2.0.jar : WebLogic 6, 7 プラグイン
  • com.sun.weblogic8/com.sun.weblogic8_2.0.jar : WebLogic 8 プラグイン
  • com.sun.windows/com.sun.windows_2.0.jar : Windows プラグイン
ドキュメントは docs.sun.com に現在のバージョン 5.1 のものがあります。日本語訳されているのは残念ながら前のバージョン 5.0 しかありませんが参考になります。


次回は実際にインストールしてみましょう。

Monday Oct 24, 2005

How N1 Grid Service Provisioning System works

N1 SPS の話をしばらくしていませんでしたね。数回にわけて少し詳しく説明していきたいと思っています。というのもすでに私自身はこのプロジェクトからは離れていて今のうちに書いておかないと忘れてしまいそうだからです。Java ES の仕事はまだ少ししているものの徐々に離れつつあります。Java ES に関して言うとしばらく集中して書いてきましたが、すでに引き出しの中にしまい込んでいるものはほとんど出してしまいましたのでもう書くネタがありません

jp.sun.com の N1 SPS の ページ は更新されていないのでしょうかね、英語の ページ のほうが最新の情報になっていますのでそちらのほうを見てください。ホワイトペーパーに概要を理解するにはいいドキュメントがあります。


このドキュメントの以下の図を見ながらどのように SPS が構成されてどのように動くのかを今回は説明したいと思います。あ、そうそう、これを書く前に SPS のことを誰か書いていないかな〜と blogs.sun.com を検索してみましたけどいないんですね〜ちょっと残念です。




MS - マスターサーバー(MASTER SERVER)

管理インターフェースとリポジトリ、実際の配備エンジンを提供する中核です。たいていは MS 1台と各対象となる複数のサーバーという構成になります。

RA - リモートエージェント (REMOTE AGENT)

対象となるサーバーマシンにインストールされるエージェントです。Java のプログラムです。これが MS と繋がり MS からの命令を待ちます。配備されるファイルなどを受け取りサーバーマシン上で配備を実行するクライントプログラムです。

一番簡単な例

SPS は 右上の GOLD SERVER 上で動いている RA からコンポーネントのマスターデータを作成し、MS に保存します。それを右真ん中、右下の多くのホストに配備をします。左真ん中にあるように操作するインターフェースとしてはブラウザベースのインター フェース、コマンドラインのインターフェスがあります。

例えば /etc/resolv.conf のエントリを変更しないといけないケースがあったとしましょう。データーセンター内の数十台、数百台のサーバーにそれぞれ手動で変更するのは大変ですよ ね。この場合は GOLD SERVER から変更後の /etc/resolv.conf を吸い上げて、MS に保存し、それをクリックひとつで、一気に数百台にサーバーに配備することができます。

「サービス」とは

一番簡単な例は一つのファイルでしたが、N1 Grid Service Provisioning Server はその名のとおり「サービス」を「プロビジョニング」するサーバーです。ここでいう「サービス」とはなんでしょう。サービスとはアプリケーションでもあ り、アプリケーションの構成であったり、OS そのものであったり、パッチであったり、EJB であったり、最小単位は一つのファイルであったり、とにかくなんでもありなんですね。その対象となるサーバーが何か目的をもって動くときの一つの 構成要素と思って下さい。

プラグイン

SPS の最小構成は単純なファイルやディレクトリなどの配備のみのコアな部分しか入っていません。それ以上の目的に使う場合はプラグインを利用します。さまざま なプラグインが用 意されています。Sun Java System Application Server や、WebLogic などのアプリケーションプラットフォーム、Sun Java System Web Server などの Web サーバー、Oracle などのデーターベースや、OSP は OS 自体のプロビジョニングです。プラグインは以下の表のように jar で提供されます。

Thursday Sep 01, 2005

N1: Progress Bar on BUI

N1 SPS に限った話ではないのですがブラウザ・ユーザー・インターフェース(BUI)で長く時間がかかるタスクを実行中にその進歩状況を示すにはどのようなものがあるでしょうか。たいがいは「何かやってますよ~」ということで砂時計マークなんでしょうかね。ある程度の時間ならばそれで OK なのでしょうが、かなり長い間時間がかかる場合は ActiveX で進捗バーを出す? アプレット?

N1 SPS はページの再描画と、アニメーション GIF でその進捗状況を示してくれます。私が見た中でこういう感じに進歩状況を示してくれる BUI はなかったので、初めてこの画面を見たときはとっても新鮮だった記憶がありますよ~ SPS のコンソールの一番気に入っているところです。

この画面は SPS の管理コンソール(ブラウザ上)で一つのタスクを走らせたところです。 deployment のところに進捗バーがついていますよね。そのバーはこんな感じに動いてくれます。30% の点滅が微妙に他と違ってゆっくりで「これからガリガリやり始めるぞ!!」という感じがしてにくらしいです!!(IE で見るとなぜか速度が同じ…)

30% (はじまった)
50% (半分終わった)
75% (もちょい、ガンバレ)
95% (終わる~)

Wednesday Aug 31, 2005

N1: ING Completes Internet Banking Project using N1 SPS

ING Completes Internet Banking Project on Sun Microsystems Platform という記事が出ています。ここで中核となっているのが Sun N1 Service Provisioning System (N1 SPS) です。アプリケーションの配備の自動化によって迅速な配備とコスト削減を実現できます。

SPS については今後いろいろ書いていきたいと思っています。

About

NetBeans Globalization

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today