Rubyスクリプトの構成について、運用操作部品「任意のコマンドを実行」を例に説明します。
require 'standard/swrba_input' require 'standard/swrba_command' | 必須 | (1)利用するライブラリの読み込み |
require 'kconv' | 任意 | |
logger = Swrba_Logger.new("swrba_command_run","swrba_standard_guest.log") | 任意 | (2)運用操作部品のログ出力準備 |
input = Swrba_Input.new | 必須 | (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 if commandline == nil | 任意 | (5)入力情報の確認 |
command = Swrba_Command.new | 任意 | (6)ライブラリを利用して実行 |
STDOUT.print command.stdout.toutf8 STDERR.print command.stderr.toutf8 | 任意 | (7)実行結果の出力 |
以下に、上記スクリプトファイルの詳細について説明します。
運用操作部品で利用するライブラリを読み込みます。利用可能なライブラリには、Rubyの標準提供ライブラリとライブラリリファレンスに記載されているライブラリがあります。製品が提供するライブラリを利用する場合は、require文に"standard/ライブラリのファイル名"を定義します。製品が提供するライブラリの詳細については、“Systemwalker Runbook Automation リファレンスガイド”の“製品が提供するライブラリ”を参照してください。
Rubyスクリプト | 説明 |
---|---|
require 'standard/swrba_input' | 入力情報を格納したファイルを解析するためのライブラリを定義しています。本ライブラリは必ず定義します。 |
require 'standard/swrba_command' | 任意のコマンドを実行するためのライブラリを定義しています。 |
require 'kconv' | 文字コードの変換を行うためのライブラリを定義しています。 |
require 'standard/swrba_logger' | 運用操作部品のログを出力するためのライブラリを定義しています。 |
運用操作部品の処理結果をログとして出力するための準備を行います。
Rubyスクリプト | 説明 |
---|---|
logger = Swrba_Logger.new ("swrba_command_run", "swrba_standard_guest.log") | ログを出力するためのインスタンスを生成しています。
|
入力情報を抽出する準備処理については、必ず記載します。
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") | 入力情報ファイルからホスト名の情報を抽出しています。 |
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") | 入力情報ファイルから実行ユーザー名のパスワードの情報を抽出しています。 |
抽出した入力情報を確認します。必須の入力情報が存在しない場合、エラーとして処理を終了します。
Rubyスクリプト | 説明 |
---|---|
if ipaddress != nil && ipaddress != "" hostname = ipaddress end | 入力情報ファイルにIPアドレスの情報が含まれる場合、ホスト名にIPアドレスを指定しています。 |
ライブラリを利用して実行する内容を記述します。上記Rubyスクリプトは、コマンドライブラリを利用する場合の記述例です。
実行した結果を出力します。上記Rubyスクリプトは、コマンドライブラリを利用する場合の記述例です。
Rubyスクリプト | 説明 |
---|---|
STDOUT.print | 標準出力します。 |
STDERR.print | 標準エラー出力します。 |
command.stdout.toutf8 | 出力する内容の文字コードをUTF-8に変換しています。 |
なお、上記の例では例外が発生した場合にログを出力しています。
Rubyスクリプト | 説明 |
---|---|
logger.error(exc) | 例外の結果をログに出力します。 |
運用操作部品のログファイルは、以下のフォーマットで出力します。
ログ種別の頭文字,[ログ出力時間#インスタンス番号] ログ種別:プロセスID:アクティビティID:ラベル名:ログ内容 (例) E, [2010-04-21T16:06:22.710069 #340] ERROR -- :プロセスID:アクティビティID:ラベル名:[例外内容] |
ログファイルは以下の場所に格納され、1MBごとにローテーションします。
【Windows】
<Systemwalker Runbook Automation 管理サーバのインストールディレクトリ>\SWRBAM\etc\share\rbaope\work\log\
【Linux】
/etc/opt/FJSVswrbam/share/rbaope/work/log/
独自に開発した運用操作部品には、復帰値を0~255の範囲で設定できます。ただし、159、160、171~240の復帰値はSystemwalker Runbook Automationで予約されているため、この範囲の復帰値は設定しないでください。また、161~170の復帰値を設定するとリトライを実施します。リトライ回数は、自動運用プロセスの開発時に運用操作部品の入出力情報として設定します。
(例) 復帰値“150”を設定:exit 150
独自に開発した運用操作部品は、作成後、運用操作部品の登録を行うことで、管理サーバの以下の場所に格納されます。
【Windows】
<Systemwalker Runbook Automation 管理サーバのインストールディレクトリ>\SWRBAM\etc\share\rbaope\bin\parts\guest\E0\
【Linux】
/etc/opt/FJSVswrbam/share/rbaope/bin/parts/guest/E0/
Rubyスクリプトのファイル名は、以下のようにしてください。
拡張子(.rb)を含め、64バイト以内で指定します
ファイル名には、英小文字(a-z)、英大文字(A-Z)、数字(0-9)、半角ハイフン(-)、半角アンダーバー(_)およびピリオド(.)だけ使用できます
1文字目は英小文字(a-z)、英大文字(A-Z)にしてください
また、製品で標準提供される運用操作部品のRubyスクリプトファイル名には、接頭語に“swrba_”がついています。保守性を考慮して、独自に開発した運用操作部品のRubyスクリプトファイル名の接頭語には、“swrba_”をつけないことを推奨します。