ページの先頭行へ戻る
SystemwalkerRunbook Automation V14g 開発ガイド

4.4 運用操作部品の作成

運用操作部品は、外部のRuby開発環境やテキストエディタなどを利用して作成します。

1つの運用操作部品プロジェクト内に、1つのRubyスクリプトを作成します。

独自に開発した運用操作部品は、製品が提供する運用操作部品と同様に運用操作アクティビティとして使用することができます。

運用操作部品は、以下を使用するRubyスクリプト(Ruby 1.8.6)を記述して開発します。

注意

製品が提供するライブラリおよび独自に開発したライブラリについては、運用操作アクティビティとして使用できません。

運用操作部品の処理の流れ

運用操作部品は、以下の手順で処理を行います。

  1. 運用操作部品への入力

    運用操作部品を実行するために必要な入力情報が格納されたファイル(入力情報ファイル)のファイル名を運用操作部品の実行時の引数で受け取ります。

    入力情報ファイルは、XML形式ファイルです。

    ファイル名は絶対パスで受け取ります。

  2. 運用操作部品の実行に必要な入力情報を取得

    運用操作部品の内部で入力情報ライブラリを利用して、入力情報ファイルから入力情報を抽出します。

    入力情報ファイルの文字コードはUTF-8です。

  3. 運用操作部品を実行

    入力情報を利用して、運用操作部品に必要な処理を行います。

    運用操作部品は、運用自動化サーバ上で実行されます。業務サーバ上で処理を実行する場合、リモートで処理を実行するための処理を作成する必要があります。

  4. 運用操作部品の実行結果を出力

    運用操作部品の実行結果には、復帰値、標準出力、標準エラー出力があります。

    標準出力、標準エラー出力の文字コードはUTF-8に変換し、出力します。

    標準出力は、次の運用操作部品で処理を行うための入力情報として利用できます。

    標準エラー出力は、運用操作部品の実行結果を保持するために利用できます。

Rubyスクリプト構成例

Rubyスクリプトの構成について、以下に任意のコマンドを実行する運用操作部品の例を説明します。ライブラリの詳細については、“Systemwalker Runbook Automation リファレンスガイド”の“製品が提供するライブラリ”を参照してください。

require 'standard/swrba_input'

必須

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

require 'kconv'

require 'standard/swrba_logger'

・・・

任意

logger = Swrba_Logger.new(ラベル名,ログファイル名)

任意

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

input = Swrba_Input.new

option = []

while data = ARGV.shift

option.push(data)

end

if option.size != 2

  exit -1

end

if option[0] != "-input"

  exit -1

end

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

  exit -1

end

必須

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

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

・・・

任意

(4)入力情報を抽出

if hostname == nil

  exit -1

end

・・・

任意

(5)入力情報の確認

command = Swrba_Command.new

begin

command.run(hostname, username, password,

            execusername,execpassword, commandline)

任意

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

  STDOUT.puts command.stdout.toutf8

rescue => exc

  STDERR.puts command.stderr.toutf8

   logger.error(exc)

  exit -1

end

任意

(7)実行結果の出力

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

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

運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリには、Rubyの標準提供ライブラリとライブラリリファレンスに記載されているライブラリがあります。

Rubyスクリプト

説明

require 'standard/swrba_input'

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

require 'kconv'

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

require 'standard/swrba_logger'

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

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

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

Rubyスクリプト

説明

logger = Swrba_Logger.new(ラベル名,ログファイル名)

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

  • ラベル名

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

  • ログファイル名

    任意のファイル名を指定します。ただし、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")

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

(5) 入力情報の確認

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

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

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

(7) 実行結果の出力

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

Rubyスクリプト

説明

STDOUT.puts

標準出力します。

STDERR.puts

標準エラー出力します。

command.stdout.toutf8

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


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

Rubyスクリプト

説明

logger.error(exc)

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

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

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

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

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

ログファイルは以下の場所に格納され、1MBごとにローテーションします。

【Windows】

<インストールパス>\itpm\rbaope\work\log\

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

独自に開発した運用操作部品には、復帰値を設定できます。ただし、171~240の復帰値はSystemwalker Runbook Automationで使用しているため、この範囲の復帰値は設定しないでください。また、161~170の復帰値を設定すると、指定されたリトライ回数分リトライを実施します。

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

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

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

【Windows】

<インストールパス>\itpm\rbaope\bin\parts\guest\E0\


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

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