ページの先頭行へ戻る
Systemwalker Runbook Automation 運用ガイド
Systemwalker

3.4.2 Rubyスクリプトの構成例

Rubyスクリプトの構成について、運用操作部品「任意のコマンドを実行」を例に説明します。

require 'standard/swrba_input'

require 'standard/swrba_command'

必須

(1)利用するライブラリの読み込み

require 'kconv'
require 'standard/swrba_logger'

任意

logger = Swrba_Logger.new("swrba_command_run","swrba_standard_guest.log")

任意

(2)運用操作部品のログ出力準備

input = Swrba_Input.new
option = []
while data = ARGV.shift
  option.push(data)
end
if option.size != 2
  exit 198
end
if option[0] != "-input"
  exit 198
end
if File.exist?(option[1]) == false
  exit 198
end

必須

(3)入力情報ファイルから入力情報の抽出準備

hostname = input.input_analysis(option[1],"hostname")

ipaddress = input.input_analysis(option[1],"ipaddress")

commandline = input.input_analysis(option[1],"commandline")

username = input.input_analysis(option[1],"username")

password = input.input_analysis(option[1],"password")

execusername = input.input_analysis(option[1],"execusername")

execpassword = input.input_analysis(option[1],"execpassword")

任意

(4)入力情報を抽出

if ipaddress != nil && ipaddress != ""

  hostname = ipaddress

end

if hostname == nil
  exit 197
end

if commandline == nil
  exit 197
end

任意

(5)入力情報の確認

command = Swrba_Command.new
begin
  command.run(hostname, username, password,
    execusername,execpassword, commandline)

任意

(6)ライブラリを利用して実行

  STDOUT.print command.stdout.toutf8
rescue => exc

  STDERR.print command.stderr.toutf8
   logger.error(exc)
  exit command.return_code
end

任意

(7)実行結果の出力

3.4.2.1 スクリプトの詳細

以下に、上記スクリプトファイルの詳細について説明します。

(1) 利用するライブラリの読み込み

運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリには、Rubyの標準提供ライブラリとライブラリリファレンスに記載されているライブラリがあります。製品が提供するライブラリを利用する場合は、require文に“standard/ライブラリのファイル名”を定義します。製品が提供するライブラリの詳細については、“Systemwalker Runbook Automation リファレンスガイド”の“製品が提供するライブラリ”を参照してください。

Rubyスクリプト

説明

require 'standard/swrba_input'

入力情報を格納したファイルを解析するためのライブラリを定義しています。本ライブラリは必ず定義します。

require 'standard/swrba_command'

任意のコマンドを実行するためのライブラリを定義しています。

require 'kconv'

文字コードの変換を行うためのライブラリを定義しています。

require 'standard/swrba_logger'

運用操作部品のログを出力するためのライブラリを定義しています。

(2) 運用操作部品のログ出力準備

運用操作部品の処理結果をログとして出力するための準備を行います。

Rubyスクリプト

説明

logger = Swrba_Logger.new

("swrba_command_run",

"swrba_standard_guest.log")

ログを出力するためのインスタンスを生成しています。

  • "swrba_command_run"

    ログの出力元を特定するためのラベル名です。ラベル名は、一意となるラベル名を指定します。

  • "swrba_standard_guest.log"

    ログのファイル名です。任意のファイル名を指定します。ただし、Systemwalker Runbook Automationで提供している運用操作部品が出力するログファイル名"swrba_standard.log"は指定しないでください。

(3) 入出力情報ファイルから入力情報の抽出準備

入力情報を抽出する準備処理については、必ず記載します。

Rubyスクリプト

説明

input = Swrba_Input.new

入力情報ファイルを解析するためのインスタンスを生成しています。

option = []

データの初期化を行います。

option.push(data)

パラメーターの情報を取得し、optionに格納します。

if option.size != 2

パラメーターの数を確認しています。

if option[0] != "-input"

オプションの種別を確認しています。

if File.exist?(option[1]) == false

ファイルの存在を確認しています。

(4) 入力情報の抽出

入力情報ファイルから実行に必要な入力情報を抽出します。

Rubyスクリプト

説明

hostname = input.input_analysis(option[1],"hostname")

入力情報ファイルからホスト名の情報を抽出しています。

ipaddress = input.input_analysis(option[1],"ipaddress")

入力情報ファイルからIPアドレスの情報を抽出しています。

commandline = input.input_analysis(option[1],"commandline")

入力情報ファイルから実行するコマンドの情報を抽出しています。

username = input.input_analysis(option[1],"username")

入力情報ファイルから接続ユーザー名の情報を抽出しています。

password = input.input_analysis(option[1],"password")

入力情報ファイルから接続ユーザーのパスワードの情報を抽出しています。

execusername = input.input_analysis(option[1],"execusername")

入力情報ファイルから実行ユーザー名の情報を抽出しています。

execpassword = input.input_analysis(option[1],"execpassword")

入力情報ファイルから実行ユーザー名のパスワードの情報を抽出しています。

(5) 入力情報の確認

抽出した入力情報を確認します。必須の入力情報が存在しない場合、エラーとして処理を終了します。

Rubyスクリプト

説明

if ipaddress != nil && ipaddress != ""

hostname = ipaddress

end

入力情報ファイルにIPアドレスの情報が含まれる場合、ホスト名にIPアドレスを指定しています。

hostnameオプションの指定内容、および構成管理データベース(CMDB)の登録状態により、“hostname”と“ipaddress”のどちらか片方にだけに値が設定され、もう片方はnilとなる場合があります。
“ipaddress”に値が設定されている場合には、“ipaddress”の値を“hostname”に代入しておくことにより、これ以降の処理では必ず値が設定された状態で“hostname”を使用することができます。

(6) ライブラリを利用して実行

ライブラリを利用して実行する内容を記述します。上記Rubyスクリプトは、コマンドライブラリを利用する場合の記述例です。

(7) 実行結果の出力

実行した結果を出力します。上記Rubyスクリプトは、コマンドライブラリを利用する場合の記述例です。

Rubyスクリプト

説明

STDOUT.print

標準出力します。

STDERR.print

標準エラー出力します。

command.stdout.toutf8

出力する内容の文字コードをUTF-8に変換しています。


なお、上記の例では例外が発生した場合にログを出力しています。

Rubyスクリプト

説明

logger.error(exc)

例外の結果をログに出力します。

3.4.2.2 運用操作部品のログについて

独自に開発した運用操作部品のログファイルは、以下のフォーマットで出力します。

ログ種別の頭文字,[ログ出力時間#インスタンス番号] ログ種別:プロセスID:アクティビティID:ラベル名:ログ内容

(例) E, [2010-04-21T16:06:22.710069 #340] ERROR -- :プロセスID:アクティビティID:ラベル名:[例外内容]

ログファイルは以下の場所に格納され、1MBごとにローテーションします。スクリプトファイル内にてログ出力ライブラリに指定したファイル名ごとに、最大で10個のファイルが格納されます。

【Windows】

[Systemwalker Runbook Automation 管理サーバのインストールディレクトリ]\etc\share\rbaope\work\log\

[Systemwalker Runbook Automation管理サーバのインストールディレクトリ]は、デフォルトの場合は“C:\Fujitsu\Systemwalker\SWRBAM”です。

【Linux】

/etc/opt/FJSVswrbam/share/rbaope/work/log/

【ファイル名】

ログファイルの名前は以下です。

3.4.2.3 運用操作部品の復帰値について

独自に開発した運用操作部品には、復帰値を0~255の範囲で設定できます。ただし、159、160、171~240の復帰値はSystemwalker Runbook Automationで予約されているため、この範囲の復帰値は設定しないでください。また、161~170の復帰値を設定するとリトライを実施します。リトライ回数は、自動運用プロセスの開発時に運用操作部品の入出力情報として設定します。

(例) 復帰値“150”を設定:exit 150

3.4.2.4 運用操作部品の格納場所とファイル名について

独自に開発した運用操作部品は、作成後、運用操作部品の登録を行うことで、管理サーバの以下の場所に格納されます。

【Windows】

[Systemwalker Runbook Automation 管理サーバのインストールディレクトリ]\etc\share\rbaope\bin\parts\guest\E0\

[Systemwalker Runbook Automation管理サーバのインストールディレクトリ]は、デフォルトの場合は“C:\Fujitsu\Systemwalker\SWRBAM”です。

【Linux】

/etc/opt/FJSVswrbam/share/rbaope/bin/parts/guest/E0/

Rubyスクリプトのファイル名は、以下のようにしてください。

また、製品で標準提供される運用操作部品のRubyスクリプトファイル名には、接頭語に“swrba_”がついています。保守性を考慮して、独自に開発した運用操作部品のRubyスクリプトファイル名の接頭語には、“swrba_”をつけないことを推奨します。