2015年9月29日火曜日

【トピックス】LifeKeeper for Linuxを利用した環境でOracleリスナーリソース作成時のエラーに関する情報が公開されました。

こんにちは、サイオステクノロジー 小川です。
 
今日は、LifeKeeper for Linuxを利用した環境でOracleリスナーリソース作成時の
The file/oracle_path/listener.orais not a valid listener file.…」エラーに
関する情報をご案内します。 


上記のエラーが出力し、リソースの作成ができない時の解決方法に関する説明が
以下にまとめられています。 

 [Linux] Oracleリスナーリソース作成時の「The file/oracle_path/listener.orais
  not a valid listener file.…」エラーについて
 http://lk.sios.com/?p=3743 

LifeKeeperのユーザーサイトには、他にも役に立つ情報がたくさん掲載されていますので、
是非とも、ご活用ください。

2015年9月24日木曜日

【トピックス】Chefエラーメッセージの読み方

こんにちは。佐藤です。

Chefのエラーメッセージは非常に詳細なので、デバッグしているときはありがたいのですが、普段は詳細すぎて読みにくかったりします。
今回はそんなエラーメッセージとの戦い方について、開発中にはまった経験を元に色々紹介したいと思います。

Chefを有効活用する上で参考なれば幸いです。


エラーの出るタイミングについて

ChefCookbookは以下の二段階で実行されます。
● レシピのコンパイル(内部形式への変換)
● 実行
なので、エラーもそれぞれの段階で出ます。出力形式がそれぞれで違うので、両方紹介します。

コンパイルエラー編
その1

Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["lkinstall"]
Synchronizing Cookbooks:
  - lkinstall
Compiling Cookbooks... 
=================================================
Recipe Compile Error in /var/chef/cache/cookbooks/lkinstall/recipes/default.rb
================================================= 
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
  /var/chef/cache/cookbooks/lkinstall/recipes/default.rb:60:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/lkinstall/recipes/default.rb:
 53:  packages = []
 54:  node.run_context.cookbook_collection[cookbook_name].manifest["files"].each { |f|
 55:    name = f['name']
 56:    packages << name if /\.rpm$/ =~ name
 57:  }
 58:
 59:  files = packages
 60>> files += node[node[:hostname]]['licenses']
 61:
 62:  files.each { |file|
 63:    cookbook_file "#{Chef::Config[:file_cache_path]}/#{file}" do
 64:      source file
 65:    end
 66:  }
 67:
 68:  install_pkgs(packages).each { |pkg|
 69:    package pkg do
Running handlers:
[2015-08-28T15:56:45+09:00] ERROR: Running exception handlers
Running handlers complete
[2015-08-28T15:56:45+09:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 2.378495397 seconds
[2015-08-28T15:56:45+09:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2015-08-28T15:56:45+09:00] ERROR: undefined method `[]' for nil:NilClass
[2015-08-28T15:56:46+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

色を変えた部分に注目します。
この場合はnode[node[:hostname]]nilなのでエラーになっています。

node[]変数はアトリビュートファイルから定義を持ってきている変数なので、まずlkinstallのアトリビュートを見ます。

default['LKROOT'] = "/opt/LifeKeeper"
default[‘host1']['licenses'] = ["LKLinux-Core_04-Jan-2016.lic"]

’host1’というノードに対して"LKLinux-Core_04-Jan-2016.lic"というライセンスを適用することになっています。なので、このエラーはnode[:hostname]が、期待している’host1’を返していないのであろうと想像できます。

この変数の値はChefが定義しているので、Chefに問い合わせればどうなっているか確認できます。該当ノードで以下のコマンドを実行します。
 
  ohai|grep hostname
  "hostname": "host11",

ohaiコマンドはnode変数の定義を返してくるコマンドです。大量に出力されるのでgrepで絞り込んでいます。
この例ではnode[:hostname]’node11’と定義されることがわかります。

ということで、アトリビュートの定義と実際のホスト名が食い違っているために、変数が期待した結果を返さずエラーになっていることがわかりました。

したがって、アトリビュートのホスト名を正しくすれば解決することが出来ます。

コンパイルエラー編
その2


Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["lkinstall"]
Synchronizing Cookbooks:
  - lkinstall
Compiling Cookbooks...
================================================
Recipe Compile Error in /var/chef/cache/cookbooks/lkinstall/attributes/default.rb
================================================
NoMethodError
-------------
Undefined node attribute or method `bash' on `node'
Cookbook Trace:
---------------
  /var/chef/cache/cookbooks/lkinstall/attributes/default.rb:37:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/lkinstall/attributes/default.rb:
 30:        next
 31:      end
 32:    }
 33:    ret += files
 34:    return ret
 35:  end
 36:
 37>> bash "rmlk" do
 38:    user "root"
 39:    code <<EOF
 40:  if [ -x #{node['LKROOT']}/bin/rmlk ]
 41:  then
 42:    #{node['LKROOT']}/bin/lkstop
 43:    while [ -f #{node['LKROOT']}/IN_IS_ON ]
 44:    do
 45:            sleep 1
 46:    done
Running handlers:
[2015-08-28T16:36:41+09:00] ERROR: Running exception handlers
Running handlers complete
[2015-08-28T16:36:41+09:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 2.534198241 seconds
[2015-08-28T16:36:41+09:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2015-08-28T16:36:41+09:00] ERROR: Undefined node attribute or method `bash' on `node'
[2015-08-28T16:36:41+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)


色を変えた部分に注目します。
bashというメソッドがないと言われています。
が、レシピであればそれはありえないので、正しくレシピとして実行されているか確認します。

レシピと認識されているかはRelevant File Content:を見ると確認できるので、そこの結果を見ます。
この例ではattributeとあるので、レシピではなくアトリビュートファイルとして読み込まれていることがわかります。
なので、このエラーはファイルを取り違えて配置したのがエラーの原因であるとわかります。

コンパイルエラーについては、エラーになった場所が的確に出力されるので、その部分と原因をきちんと読めば対応は容易だと思います。

実行時エラー編

Starting Chef Client, version 12.4.1
resolving cookbooks for run list: ["resource"]
Synchronizing Cookbooks:
  - resource
Compiling Cookbooks...
Converging 37 resources
Recipe: resource::default
  * bash[rmins] action run
    - execute "bash"  "/tmp/chef-script20150821-27229-1dt3n0s"
  * bash[dr_create-datarep-DataKeeperA] action run
    - execute "bash"  "/tmp/chef-script20150821-27229-1xvc9q9"
  * bash[fs_create-/FS/DataKeeperA] action run
    - execute "bash"  "/tmp/chef-script20150821-27229-19w8xdt"
  * bash[ip_create-IP-A] action run
    ==================================================
    Error executing action `run` on resource 'bash[ip_create-IP-A]'
    ==================================================
    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    Expected process to exit with [0], but received '1'
    ---- Begin output of "bash"  "/tmp/chef-script20150821-27229-as4wuh" ----    STDOUT:
    STDERR: BEGIN create of "IP-A"
    LifeKeeper application=comm on a130.
    LifeKeeper communications resource type= ip on a130.
    Creating resource instance with id IP-10.125.139.201 on machine a130
    Resource successfully created on a130
    BEGIN restore of "IP-A"
    IP address seems to still exist somewhere else.
    END failed "restore" of "IP-A" with return value of 1
    restore of resource "IP-A" has failed
    create ip hierarchy failure: perform_action failed
    END failed create of "IP-A".
    ---- End output of "bash"  "/tmp/chef-script20150821-27229-as4wuh" ----
    Ran "bash"  "/tmp/chef-script20150821-27229-as4wuh" returned 1
    Resource Declaration:
    ---------------------
    # In /var/chef/cache/cookbooks/resource/recipes/default.rb
     49:     bash "ip_create-#{tag}" do
     50:       user "root"
     51:       code <<EOF
     52: #{LKROOT}/lkadm/subsys/comm/ip/bin/creIPhier #{primach}
#{ipaddr} #{priif} #{mask} "none" #{switchback} #{tag}
     53: EOF
     54:     end
     55: # DataKeeper
    Compiled Resource:
    ------------------
    # Declared in
/var/chef/cache/cookbooks/resource/recipes/default.rb:49:in `block in
from_file'
    bash("ip_create-IP-A") do
      action [:run]
      retries 0
      retry_delay 2
      default_guard_interpreter :default
      command "ip_create-IP-A"
      backup 5
      returns 0
      user "root"
      code "/etc/default/LifeKeeper\n/opt/LifeKeeper/lkadm/subsys/comm/ip/bin/creIPhier
  a130 10.125.139.201 eth0 255.254.0.0 \"none\" INTELLIGENT IP-A \n"
        interpreter "bash"
      declared_type :bash
      cookbook_name "resource"
      recipe_name "default"
    end
Running handlers:
[2015-08-21T19:13:04+09:00] ERROR: Running exception handlers
Running handlers complete
[2015-08-21T19:13:04+09:00] ERROR: Exception handlers complete
Chef Client failed. 3 resources updated in 10.27878 seconds
[2015-08-21T19:13:04+09:00] FATAL: Stacktrace dumped to
/var/chef/cache/chef-stacktrace.out
[2015-08-21T19:13:04+09:00] ERROR: bash[ip_create-IP-A]
(resource::default line 49) had an error:
Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with
[0], but received '1'
---- Begin output of "bash"  "/tmp/chef-script20150821-27229-as4wuh" ----
STDOUT:
STDERR: BEGIN create of "IP-A"
LifeKeeper application=comm on a130.
LifeKeeper communications resource type= ip on a130.
Creating resource instance with id IP-10.125.139.201 on machine a130
Resource successfully created on a130
BEGIN restore of "IP-A"
IP address seems to still exist somewhere else.
END failed "restore" of "IP-A" with return value of 1
restore of resource "IP-A" has failed
create ip hierarchy failure: perform_action failed
END failed create of "IP-A".
---- End output of "bash"  "/tmp/chef-script20150821-27229-as4wuh" ----
Ran "bash"  "/tmp/chef-script20150821-27229-as4wuh" returned 1
[2015-08-21T19:13:04+09:00] FATAL:


ものすごく長いですが、見るべきところはこの2箇所です。

これで
● どのリソースを作るときに
● なぜ失敗したか

を特定できます。


今回の場合はIPリソースの”IP-A"を作ろうとしたら、STDERRにある

IP address seems to still exist somewhere else.

というエラーで失敗したということが読み取れます。
STDERRに出るメッセージはLifeKeeper GUIで表示されるものと同じなので、エラーへの対応方法についてはマニュアルを参照してください。

今回のエラーはIPアドレスの重複なので、それを解消して再実行すれば問題は解決します。
まとめ

● Chefのエラーには2つのパターンがある
● コンパイルエラーはまずアトリビュートを確認する
● 実行時エラーはSTDERRを見る
の3点をおさえてください。

例を見てもらうとわかるように、うんざりするほど長いメッセージが出てきます。
が、パターンが定型で見るべきポイントは少ないので、要点を押さえることができれば問題解決は簡単です。

2015年9月17日木曜日

【トピックス】ChefによるLifeKeeperクラスタ構築 ~ LifeKeeperインストールからクラスタ構築 編

こんにちは、LifeKeeperの開発を担当している松嶋です。

前回より引き続き、ChefによるLifeKeeperインストールからクラスタの構築までの説明を致します。よろしくお願いします。

前々回のブログ記事Chef環境構築Chef Server/Workstation/clientを各ノードにインストールの説明、前回のブログ記事ChefによるLifeKeeperクラスタ構築~cookbook準備cookbookファイル準備の説明をしました。


今回はいよいよ、ChefでのLifeKeeperクラスタの構築に入ります。
 
構築手順の説明のために、関係するノードを以下のように定義します。


l  抽出元既存クラスタ(LifeKeeperの設定情報の抽出元となるクラスタ)

プライマリノード

ホスト名:node1

IPアドレス:192.168.0.1

スタンバイノード

ホスト名:node2

IPアドレス:192.168.0.2
 

LifeKeeperのバージョンはv9.0.0である必要があります。

※このノードには、あらかじめLifeKeeper Chef Support対象のリソース(IP,DataKeeper,Apach,MySQL,PostgreSQL)2ノード間での切り替え可能な状態で設定されている状態であるとします。

※全てのリソースはActive/Standby構成で、プライマリノード側でリソースステータスはActiveであるとします。

l  新規展開先クラスタ(新たにLifeKeeperでクラスタリング展開するノード)

プライマリノード

ホスト名:node3

IP アドレス:192.168.0.3

スタンバイノード

ホスト名:node4

IPアドレス:192.168.0.4

LifeKeeperのバージョンはv9.0.0である必要があります。

LifeKeeperの保護対象となるアプリケーション自体の設定やHAクラスタ構成に必要なネットワークは別途実施する必要があります。詳細は後述します。
 

それでは最初に、あらかじめ構築しているLifeKeeperHAクラスタ(例ではnode1またはnode2)を使用してLifeKeeperの設定情報を抽出する作業を行います。
 

◆抽出元既存クラスタでの作業

!注意:抽出元の既存クラスタの設定に関する留意点

抽出元とするHAクラスタにはいくつかの前提条件があります。それらについては、Chefサポートのクイックスタートガイドの「サポート構成」の内容を確認してください。

しかし、クイックスタートガイドで明記されていないポイントが一つあります。それは、全てのリソースが「Active/Standby」の状態である必要があるということです。v9.0.0Chefサポートを使用する場合、全てのリソース階層はどちらか一方のノードでActiveステータスとして起動している必要があります。そのため、Active/Active構成でリソースを設定している場合は、一方のノードに全てのリソース階層をスイッチオーバーしてから次の手順に移ってください。


■クラスタ構成情報の抽出

事前の条件の確認ができたら、既存クラスタから、LifeKeeperのコミュニケーションパス、リソースなどの構成情報を抽出するコマンド「lkexportxmlを実行します。

この時、プライマリノード側ですべてのリソースを起動させ、サービス中(Active)にしてください。両ノードでリソースが停止していると、Chefを使用した復元する時にエラーになります。lkexportxmlの実行例は次の通りです。


# /opt/LifeKeeper/lkadm/bin/lkexportxml>/root/resource.xml


この例では/root/resource.xmlというファイルにLifeKeeperのクラスタ構成情報がXMLとして保存されます。
 

■クラスタ構成情報ファイルをChef Workstationへコピー

前項で保存したクラスタ構成情報ファイル/root/resource.xmlChef Workstationにコピーしてください。以後の作業はChef Workstationで行います。


ここまででクラスタ構成情報の抽出は完了です。次に、Chef Workstationでその構成情報をChefで利用できるようにします。


Chef Workstationでの作業

作業を始める前に~/.chef/knife.rbを修正してください。

cookbook_pathセクションにsite-cookbooksを追加します。



cookbook_path       ['cookbooks', 'site-cookbooks']


LifeKeeperの構成情報をXMLからattributeに変換する

先ほどコピーしたXMLファイルresource.xmlを引数にして変換スクリプト、「exp2chef.pl」を実行します。exp2chef.plは前回のブログ「cookbook準備」でLifeKeeperのインストールCDからコピーしたものです。exp2chef.plの実行例は次の通りです。
 


$ ~/Chef/exp2chef.pl ~/Chef/resource.xml


上記のコマンドを実行するとcomm/res.rbがサフィックスとして付加されたファイルがresource.xml ファイルと同じディレクトリに作成されます。



・コミュニケーションパス用attributeファイル:resource.comm.rb


・リソース用attributeファイル:resource.res.rb
 これら2つのファイルがattributeファイルです。


attributeファイルのコピー

先ほど作成したattributeファイルをcookbook以下にコピーします。

ファイルは~/Chefディレクトリにあるとします。以下はコピー操作の例は以下の通りです。


       コミュニケーションパス用cookbook

$ cp ~/Chef/resource.comm.rb  ~/chef-repo/site-cookbooks/commpath/attributes/default.rb
 

       リソース用cookbook

$ cp ~/Chef/resource.res.rb ~/chef-repo/site-cookbooks/resource/attributes/default.rb
 

次に、各attributeファイルを新規クラスタでの設定内容に合わせて編集します。
 

n  attributeファイルの編集

LifeKeepercookbookとして、LifeKeeperをインストールするための「lkinstall」、コミュニケーションパス設定用の「commpath」、リソース設定用の「resource」があります、この中にある各attributeファイルを展開先ノードの状況に合わせて編集します。


LifeKeeperインストール用cookbookattributeファイルの編集

以下のパスにあるattributeファイルdefault.rbをエディタで開きます。


~/chef-repo/site-cookbooks/lkinstall/attributes/default.rb

ファイルを開くと以下のような構成で記述されていますので、ノード名を展開先のノード名に変更します。また、ライセンスキーファイル名も適用するライセンスキーファイル名に変更します。


default['ノード名']['licenses'] = ["ライセンスキーファイル名"]

例:展開先ノード名がnode3,node4 ライセンスキーファイルがevalkeys-90day.txtの場合


default['node3']['licenses'] = ["evalkeys-90day.txt"]

default['node4']['licenses'] = ["evalkeys-90day.txt"]



    ・コミュニケーションパス用cookbookattributeファイルの編集

下記のパスにあるattributeファイルをエディタで開きます。


~/chef-repo/site-cookbooks/commpath/attributes/default.rb

このファイルにはコミュニケーションパスに関連する情報が記載されていますので、ファイルに記載されているノード名とIPアドレスを、新しく展開する先のノード名とIPアドレスに変更してください。この手順における定義を例にした場合、ノード名の変更として、node1と書かれている部分をすべてnode3に、node2と書かれている部分をnode4に変更します。また、IPアドレスについては、192.168.0.1とかかれている部分を192.168.0.3に、192.168.0.2と書かれている部分を192.168.0.4に変更します。


・リソース用cookbookattributeファイルの編集

下記のパスにあるattributeファイルをエディタで開きます。


~/chef-repo/site-cookbooks/resource/attributes/default.rb


このファイルには、リソース設定に関する情報が記載されています。そのため、コミュニケーションパス用のattributeファイルと同様に、ホスト名やIPアドレス(仮想IPアドレスも含む)などを展開先の状況に合わせて変更する必要があります。タグ名やリソース設定の内容については、展開先で違うタグ名にしたい場合や設定内容を変更する必要がある場合に、それに合わせて記述内容を変更してください。たとえば、IPリソースはデフォルトでは仮想IPアドレスがはいっています。リソースタグ名が仮想IPと一致している必要はないので展開前のタグ名のままでも作成できますが、基本的には仮想IPアドレスに合わせて変更したほうがいいでしょう。あるいは、タグ名を「VIP」などIPアドレスに依存しないようなものにしてしまうのもいいかもしれません。


cookbookの準備は以上で終了です。


cookbookアップロード

準備したcookbookChef WorkstationからChef Serverへアップロードします。

以下chefリポジトリの作業になりますので、最初にchef-repoに移動します。



$ cd ~/chef-repo


レシピ、アトリビュートが適切なディレクトリに存在していることを確認してから以下のコマンドを実行します。
 


knife cookbook upload クックブック名

LifeKeepercookbooklkinstall,commpath,resourceがセットですから、以下の様にコマンドを入力しChef Serverにアップロードします。


$ knife cookbook upload lkinstall

$ knife cookbook upload commpath

$ knife cookbook upload resource

アップロードする順番は特にありません。


!注意 recipeattributedefault.rbを編集する際、旧バージョンや、バックアップのファイルを同じディレクトリに入れておくと、Chefが間違ってレギュラーファイルと解釈し、展開が失敗する場合があります。default.rb以外のファイルは置かないようにしてください。


run list登録

アップロードしたcookbookをクライアントからの要求に応じて実行するよう、run listに登録をします。run listは次のようにコマンドを実行して登録をします。


knife node run_list add ノード名 'recipe['cookbook']'

run_listはバッチファイルのようなもの考えて下さい。登録した順番に実行します。そのため、手動でインストールする手順と同じ順序で実行するように登録する必要があります。そのため、必ず、lkinstallcommpathresourceの順番に登録してください。具体的な実行例は次の通りです。



$ knife node run_list add node3 'recipe['lkinstall']'

$ knife node run_list add node3 'recipe['commpath']'

$ knife node run_list add node3 'recipe['resource']'


あるいは、以下のように実行して1回のコマンドで登録することもできます。


$ knife node run_list set lkinstall commpath resource


次からは、Chefを使用して新しくHAクラスタノードを構築します。


◆展開先クラスタ(実際にリソース展開したいノード)での作業

■展開先クラスタノードの準備

展開先ノードにはchef-clientがインストールされている必要があります。これは左記のブログChef環境構築で実施済みです。

加えて、Chefサポート機能を使用して新規にHAクラスタを構成するノードには、LifeKeeperHAクラスタを構成するために必要なアプリケーションやネットワークなどの設定をあらかじめ行っておく必要があります。この設定は、基本的には展開元と同等の設定が行われている必要があります。特に、DataKeeperで使用するディスクのサイズ、デバイスID、マウントポイントなどは構成元と合わせてください。

chef-clientの実行

展開先クラスタでActiveノードとするノードで、Chef-clientコマンドを実行します。この手順の例の場合node3側で実行します。実行例は次の通りです。


# chef-client [Enter]




このコマンドを実行すると、run_listに登録された順番で全ての処理(lkinstall, commpath, resouce)が実行されます。また、以下のように実行すれば、特定のcookbookを指定して実行することも可能です


# chef-client -r cookbook [Enter]


問題がなければ、chef-clientコマンドの実行によって、LifeKeeperのインストールからリソース作成までがchefによって自動的に行われます。


しかし、事前に必要な準備に不足などがあると、インストールやリソース作成の処理でエラーとなりchef-clientによる自動処理は停止します。その時、何が原因で停止したかについては、標準出力に表示されますのでその内容を見て、ある程度把握できるようになっています。


エラーの原因としてよくある例として、環境に依存して必要なLifeKeeperの設定が不足している場合などが挙げられます。具体的にはIPリソースを作成する環境がブロードキャストPingを利用できない場合や、仮想環境でDataKeeperを利用する場合などです。このような場合には、LifeKeeperをインストールした後、リソースを作成する前にLifeKeeperの設定ファイルに必要な設定を入れておく必要があります。その場合、リソース作成に必要なLifeKeeperの設定をrun_listlkinstall実行後に手動で編集するか、LifeKeeperファイル編集用のcookbookを別に用意して、lkinstall後に実行するようにします。それぞれの具体的な操作例は次の通りです。


手動でLifeKeeperファイルを編集する場合

まず以下のように、LifeKeeperをインストールするcookbookだけを実行します。


# chef-client -r lkinstall [Enter]

lkinstallの処理が完了したら、手動でLifeKeeperの設定ファイル(/etc/default/Lifekeeper)を編集します。編集の操作例は次の通りです。

IPリソースの利用環境がブロードキャストに応答しない場合(NOBCASTPING有効化)


# sed -i s/NOBCASTPING=0/NOBCASTPING=1/ /etc/default/LifeKeeper


・仮想環境でDataKeeperを使用する場合(device_patternファイル修正)


# echo "/dev/sdx*" >> /opt/LifeKeeper/subsys/scsi/resources/DEVNAME/device_pattern

/opt/LifeKeeper LifeKeeperのインストールディレクトリです。

dev/sdxは使用するDataKeeperで保護するディスクのデバイスIDになります。たとえば、/dev/sdb1を使用する場合には”/dev/sdb*”としてください


必要な編集が完了したら、残りのcookbookを以下の順序で実行してください。


# chef-client -r commpath [Enter]

(処理が完了)

# chef-client -r resource [Enter]




LifeKeeperファイル編集用のcookbookを使用する場合


ファイル編集用のrecipeファイルのひな型をご用意しました。以下からダウンロードして内容を確認し、使用する環境に合わせて編集した上でcookbookrecipeとして使用してください

http://www.sios.com/ filedown/chef/customize.zip


このcustomize用のrecipeを使用するためには、customizecookbooklkinstallresourceなどと同様に別途作成します。結果として、4つのcookbookrun_listに登録されることになります。

作成したcustomize用のrecipeは、lkinstallの後に実行されるように登録します。登録が完了したら、以下のようにchef-clientコマンドを実行してください。



# chef-client [Enter]


問題がなければ自動的に、リソース作成までが行われるはずです。


なお、ここまでの内容に関連する情報が、以下のユーザーサイトにもありますので、合わせてご参照ください。



◆リソース階層の完成と起動

chef-clientコマンドが完了すると、DataKeeperリソースがActiveISP)、その他のリソースについては両ノードStandby(両ノードともOSU)で処理が完了します。

リソース階層の構成などに問題がないことを確認し、リソースをプライマリノード側でin-serviceを実行し、リソース階層の起動に問題がないことを確認してください。

DataKeeperの同期処理が完了したら、リソースの手動切り替えやフェイルオーバーをテストしてください。


Chefサポートを使用したLifeKeeperのインストールからリソース作成は以上です。

これに加えてChefの機能を使用して保護対象のアプリケーション準備のcookbookなどもご用意いただければ、アプリケーションからリソース設定までを一度に自動展開することが可能です。お試しいただければ幸いです。