運用操作部品は、外部のRuby開発環境やテキストエディタなどを利用して作成します。
1つの運用操作部品プロジェクト内に、1つのRubyスクリプトを作成します。
独自に開発した運用操作部品は、製品が提供する運用操作部品と同様に運用操作アクティビティとして使用することができます。
運用操作部品は、以下を使用するRubyスクリプト(Ruby 1.8.6)を記述して開発します。
製品が提供するライブラリ
運用操作部品の内部から利用可能な目的別・機能別にまとめられたプログラム部品(Rubyスクリプト)です。
独自に開発したライブラリ
運用操作部品の内部から利用可能な独自に開発したプログラム部品(Rubyスクリプト)です。
注意
製品が提供するライブラリおよび独自に開発したライブラリについては、運用操作アクティビティとして使用できません。
運用操作部品の処理の流れ
運用操作部品は、以下の手順で処理を行います。
運用操作部品への入力
運用操作部品を実行するために必要な入力情報が格納されたファイル(入力情報ファイル)のファイル名を運用操作部品の実行時の引数で受け取ります。
入力情報ファイルは、XML形式ファイルです。
ファイル名は絶対パスで受け取ります。
運用操作部品の実行に必要な入力情報を取得
運用操作部品の内部で入力情報ライブラリを利用して、入力情報ファイルから入力情報を抽出します。
入力情報ファイルの文字コードはUTF-8です。
運用操作部品を実行
入力情報を利用して、運用操作部品に必要な処理を行います。
運用操作部品は、運用自動化サーバ上で実行されます。業務サーバ上で処理を実行する場合、リモートで処理を実行するための処理を作成する必要があります。
運用操作部品の実行結果を出力
運用操作部品の実行結果には、復帰値、標準出力、標準エラー出力があります。
標準出力、標準エラー出力の文字コードは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)実行結果の出力 |
以下に、上記スクリプトファイルの詳細について説明します。
運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリには、Rubyの標準提供ライブラリとライブラリリファレンスに記載されているライブラリがあります。
Rubyスクリプト | 説明 |
---|---|
require 'standard/swrba_input' | 入力情報を格納したファイルを解析するためのライブラリを定義しています。本ライブラリは必ず定義します。 |
require 'kconv' | 文字コードの変換を行うためのライブラリを定義しています。 |
require 'standard/swrba_logger' | 運用操作部品のログを出力するためのライブラリを定義しています。 |
運用操作部品の処理結果をログとして出力するための準備を行います。
Rubyスクリプト | 説明 |
---|---|
logger = Swrba_Logger.new(ラベル名,ログファイル名) | ログを出力するためのインスタンスを生成しています。
|
入力情報を抽出する準備処理については、必ず記載します。
Rubyスクリプト | 説明 |
---|---|
input = Swrba_Input.new | 入力情報ファイルを解析するためのインスタンスを生成しています。 |
option = [] | データの初期化を行います。 |
option.push(data) | パラメタの情報を取得し、optionに格納します。 |
if option.size != 2 | パラメタの数を確認しています。 |
if option[0] != "-input" | オプションの種別を確認しています。 |
if File.exist?(option[1]) == false | ファイルの存在を確認しています。 |
入力情報ファイルから実行に必要な入力情報を抽出します。
Rubyスクリプト | 説明 |
---|---|
hostname = input.input_analysis(option[1],"hostname") | 入力情報ファイルからホスト名の情報を抽出しています。 |
抽出した入力情報を確認します。必須の入力情報が存在しない場合、エラーとして処理を終了します。
ライブラリを利用して実行する内容を記述します。上記Rubyスクリプトは、コマンドライブラリを利用する場合の記述例です。
実行した結果を出力します。上記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スクリプトのファイル名は、以下のようにしてください。
拡張子(.rb)を含め、64バイト以内で指定します
ファイル名には、英小文字(a-z)、英大文字(A-Z)、数字(0-9)、半角ハイフン(-)、半角アンダーバー(_)およびピリオド(.)のみ使用できます
1文字目は英小文字(a-z)、英大文字(A-Z)にしてください
また、製品で標準提供される運用操作部品のRubyスクリプトファイル名は、最初に“swrba_”がついています。保守性を考慮して、独自に開発した運用操作部品のRubyスクリプトファイル名の最初には、“swrba_”をつけないことを推奨します。