スクリプトファイルの作成方法について説明します。
スクリプトの構造
スクリプトの構造について説明します。
スクリプトの処理記載範囲は、対象ネットワークデバイスとのtelnetまたはsshコネクションの確立からtelnetまたはsshコネクションの解放までを記載します。
以下に基本的な構造を示します。
可変情報は、パラメーターファイルやDBから得た情報が変換され、変数として定義されます。
変数定義された管理IPアドレスに対してtelnetコネクションを確立します。
変数定義されたログインアカウントを送信します。
変数定義されたログインパスワードを送信します。
コマンドファイルがある場合
コマンドファイルに記載された内容を1行ずつ送信します。
コマンドファイルがない場合
スクリプトのコマンド送受信処理を実行します。
コマンド処理が正常なら復帰値[正常]を設定します。
コマンド処理が異常なら復帰値[異常]を設定します。
変数[ログアウト文字]を送信します。
telnetコネクションを切断します。
注意
スクリプトには、必ず接続から切断までの処理を記述してください。
スクリプトで使用できる可変情報
スクリプトで使用する変数は、変数定義部で定義します。
定義する変数の内、可変情報を含むものについては以下のように、予約変数"%Unm_DefineStart%"と"%Unm_DefineEnd%"の間に定義します。
# %Unm_DefineStart% |
スクリプトの中で扱える予約された可変情報(予約変数名)は、他の文字列と識別するために先頭に"Unm_"をつけた英数字とアンパサンド("&")、アンダースコア("_")、ハイフン("-")の記号で構成された文字列です。また、文字列中のアンパサンド("&")はL-Server名やネットワークリソース名といった意味のある文字列を分離するために使用する記号です。
スクリプトの中で扱える予約変数名を以下に示します。
情報種別 | 変数名 | 変換後の扱い |
可変情報書き換え範囲(開始) | %Unm_DefineStart% (注1) | スクリプト内の可変情報を変換対象にする範囲の開始位置を指定します。 |
可変情報書き換え範囲(終了) | %Unm_DefineEnd% (注1) | スクリプト内の可変情報を変換対象にする範囲の終了位置を指定します。 |
コマンドファイル名 | %Unm_CommandFileName% (注2) | コマンドファイル名 |
VLAN-ID | %Unm_VlanId% (注3) | VLAN-ID値 |
VLAN-ID | %Unm_VlanId&ネットワークリソース名% (注3) | VLAN-ID値 |
管理IPアドレス | %Unm_MyLoginIp% | 自動設定対象機器へのSSH/TELNET用ログインIPアドレス |
ログインアカウント1 | %Unm_MyLoginAccount1% | 自動設定対象機器へのSSH/TELNET用ログインアカウント名 |
ログインアカウント2 | %Unm_MyLoginAccount2% | 自動設定対象機器へのFTP 用ログインアカウント名 |
ログインパスワード1 | %Unm_MyLoginPass1% | 自動設定対象機器へのSSH/TELNET用ログインパスワード |
ログインパスワード2 | %Unm_MyLoginPass2% | 自動設定対象機器へのFTP 用ログインパスワード |
管理者パスワード1 | %Unm_MyAdminPass1% | 自動設定対象機器の管理者権限(admin)へ移行するパスワード |
管理者アカウント | %Unm_MyAdminAccount% | 自動設定対象機器の管理者権限(admin)アカウント名 |
管理者パスワード2 | %Unm_MyAdminPass2% | 自動設定対象機器の管理者権限(admin)パスワード |
ログインポート | %Unm_LoginPort% | 自動設定対象機器へのSSH/TELNET用ログインポート |
FTP管理IPアドレス | %Unm_FtpLoginIp% | 自動設定対象機器からのFTP用ログインIPアドレス |
FTPログインポート | %Unm_FtpLoginPort% | 自動設定対象機器からのFTP用ログインポート |
FTPログインアカウント | %Unm_FtpLoginAccount% | 自動設定対象機器からのFTP用ログインアカウント名 |
FTPログインパスワード | %Unm_FtpLoginPass% | 自動設定対象機器からのFTP用ログインパスワード |
隣接L2スイッチ1 | %Unm_SwNode1% (注4) | 物理ラックサーバのNICと接続する隣接L2スイッチのネットワークデバイス名 または |
隣接L2スイッチ2 | %Unm_SwNode2% (注4) | 物理ラックサーバの冗長構成NICと接続するペアの隣接L2スイッチのもう一方のネットワークデバイス名 |
隣接L2スイッチポート1 | %Unm_SwPort1% (注4) | 物理ラックサーバのNICと接続する隣接L2スイッチのポート名 または |
隣接L2スイッチポート2 | %Unm_SwPort2% (注4) | 物理ラックサーバの冗長NICと接続する隣接L2スイッチのもう一方のポート名 |
ネットワークデバイスのIPv4アドレス | %Unm_Ipv4&通番&ネットワークリソース名% (注5) | 自動設定対象機器のインターフェースに設定するIPv4アドレス |
ネットワークデバイスのIPv4サブネット | %Unm_Ipv4Subnet&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するIPv4サブネット |
ネットワークデバイスのIPv4サブネットマスク | %Unm_Ipv4SubnetMask&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するIPv4サブネットマスク |
ネットワークデバイスのIPv4サブネットマスク長 | %Unm_Ipv4SubnetMaskLength&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するIPv4サブネットマスク長 |
ネットワークデバイスのIPv6アドレス | %Unm_Ipv6&通番&ネットワークリソース名% (注5) | 自動設定対象機器のインターフェースに設定するIPv6アドレス |
ネットワークデバイスのIPv6プレフィックス | %Unm_Ipv6Prefix&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するIPv6プレフィックス |
ネットワークデバイスのIPv6プレフィックス長 | %Unm_Ipv6PrefixLength&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するIPv6プレフィックス長 |
VRID | %Unm_Vrid&ネットワークリソース名% | 自動設定対象機器のインターフェースに設定するVRID |
L-Platform名 | %Unm_LplatformName% | 処理しているL-Platform名 |
L-PlatformID | %Unm_LplatformId% | 処理しているL-Platformの番号(1~99) |
ファイアーウォール名 | %Unm_FirewallName% | L-Platformの処理しているファイアーウォール名 |
ファイアーウォールのリソースID | %Unm_FirewallId% | L-Platformの処理しているファイアーウォールリソースID |
サーバロードバランサー名 | %Unm_SlbName% | L-Platformの処理しているサーバロードバランサー名 |
サーバロードバランサーのリソースID | %Unm_SlbId% | L-Platformの処理しているサーバロードバランサーリソースID |
冗長構成のネットワークデバイスの管理IPアドレス一覧 | %Unm_Group&グループ番号% | スクリプトのグループ番号に対応する冗長構成のネットワークデバイスの管理IPアドレス一覧 グループ番号はスクリプトリストに指定した値 |
退避先ディレクトリ | %Unm_BackupDir% (注6) | 退避先ディレクトリの絶対パス名 |
現在の設定情報 | %Unm_Present&変数名% (注7) | 直前の設定に使用した変数名の内容 |
インフラ管理者が指定する可変情報 | %Unm_Set_可変文字&ネットワークリソース名% | インターフェース設定ファイルに、システムで規定された予約変数以外の可変情報を指定した場合の値 |
注1) 可変情報の変換スクリプトで使用できる可変情報対象範囲の扱いについて
%Unm_DefineStart%が定義されていて%Unm_DefineEnd%が定義されていない場合
%Unm_DefineStart%の変数宣言されている以降の行からファイルの最終行までが可変情報の変換対象となります。
%Unm_DefineStart%が定義されてなく%Unm_DefineEnd%が定義されている場合
対象のファイル内での可変情報の変換は行われません。
%Unm_DefineStart%、%Unm_DefineEnd%が複数定義されている場合
ファイルの先頭行から最初に記述した%Unm_DefineStart%、%Unm_DefineEnd%の間の可変情報が変換対象となります。
注2) コマンドファイル名について
コマンドファイル名の可変情報には、システムが規定のコマンドファイル名の前に"exec_識別番号(8~10桁)"を付加した名前を設定します。
スクリプトでコマンドファイルを複数使用する場合、コマンドファイル名の予約変数名+n(nが通番の数値)として、スクリプトに記載する必要があります。
例 "%Unm_CommandFileName%1.cli" |
注3) 複数ネットワークリソースのVLAN-ID値について
複数ネットワークリソースのVLAN-ID値を可変情報として使用する場合、以下のようにスクリプトに記載することで、個々の値をシステムが解決します。
VLAN-ID値 : %Unm_VlanId%
%Unm_VlanId&ネットワークリソース名(最大32文字)%
指定されたネットワークリソース名のネットワークリソースに設定されたVLAN-IDを可変情報として設定します。
注4) 物理ラックサーバのNICが冗長構成の場合の予約変数名について
物理ラックサーバのNICが冗長構成の場合、予約変数名は以下のように対応します。
注5) 通番について
通番は、設定したい用途のIPv4/IPv6アドレスに対応する値を指定します。
ネットワークデバイスのインターフェースに設定する運用側実IPv4/IPv6アドレス、待機側実IPv4/IPv6アドレスや仮想IPv4/IPv6アドレスなど、ネットワークデバイスで必要なIPv4/IPv6アドレスに、用途別に通番を割り当てます。
インターフェース設定ファイルの以下のタグにおいて、各用途のIPv4/Ipv6アドレスと割り当てた通番との対応を指定します。
Ipv4Addressタグ
Ipv6Addressタグ
注6) 退避先ディレクトリについて
退避先ディレクトリの絶対パス名には、以下の定義ファイルの情報が設定されます。
定義ファイルの格納場所
【Windowsマネージャー】
インストールフォルダー\SVROR\Manager\etc\customize_data\manager_backup.rcxprop
【Linuxマネージャー】
/etc/opt/FJSVrcvmr/customize_data/manager_backup.rcxprop
定義ファイルのパラメーター書式
ruleset_backup_dir=保存先ディレクトリ
保存先ディレクトリ:保存先ディレクトリ名を絶対パスで指定します。
本パラメーターを指定しない場合、保存先ディレクトリ名は以下になります。
【Windowsマネージャー】
インストールフォルダー\SVROR\Manager\var\lserver_repair\ruleset_backup
【Linuxマネージャー】
/var/opt/FJSVrcvmr/lserver_repair/ruleset_backup
注7) 現在の設定情報について
ファイアーウォールおよびサーバロードバランサーのリソースの作成から削除までの間、情報の取得が可能です。
ファイアーウォールおよびサーバロードバランサーの作成または変更の操作における最後のスクリプト実行で利用した変数名が、現在の設定情報として利用できます。
現在の設定情報を利用したい場合、可変情報はスクリプトリスト内の各スクリプト単位に値を変更することや、各スクリプトで異なる可変情報名として使用することはできません。スクリプトリスト全体で同一の可変情報名や値とする必要があります。
本予約変数の"変数名"の部分に使用できる変数名は、以下の予約変数名とパラメーターファイルに記載したユーザ作成の変数名です。
情報種別 | 予約変数名 |
コマンドファイル名 | %Unm_CommandFileName% |
VLAN-ID | %Unm_VlanId&ネットワークリソース名% |
L-Platform名 | %Unm_LplatformName% |
L-PlatformのリソースID | %Unm_LplatformId% |
ファイアーウォール名 | %Unm_FirewallName% |
ファイアーウォールのリソースID | %Unm_FirewallId% |
サーバロードバランサー名 | %Unm_SlbName% |
サーバロードバランサーのリソースID | %Unm_SlbId% |
冗長構成のネットワーク機器の管理IPアドレス一覧 | %Unm_Group&グループ番号% |
現在の設定情報は、自動設定の実行毎に以下のような情報となります。
「なし」は値がないため、変数名の変換をしないことを表します。
自動設定の回数 | 変数名 | %Unm_Present&変数名%の情報 | 変数名の情報 |
1回目 | A | なし | 1 |
B | なし | 2 | |
C | なし | 3 | |
2回目 | A | 1 | 11 |
B | 2 | 2 | |
C | 3 | なし | |
3回目 | A | 11 | 11 |
B | 2 | 2 | |
C | なし | 1 |
参考
予約変数名は、以下の場所に記載することができます。
コマンドファイル内の任意の場所
スクリプトリストの"node"オペランドおよび"param"オペランド
スクリプトの"%Unm_DefineStart%"記載行から"%Unm_DefineEnd%"記載行の間
サンプルスクリプトを使用しない場合(インフラ管理者がスクリプトを新規に自作した場合など)には、コマンドファイルやスクリプトの中で扱える可変情報は、"%・・・%"のように % で囲んだ文字列で指定します。可変情報の文字列の長さは128文字以内です。
%で囲む文字列には、英数字、アンダースコア("_")、ハイフン("-")が使用できます。ただし、"Unm_"は予約変数名に使用するため、ユーザーが指定する変数名には"Unm_"を含めることはできません。
可変情報は、以下の場所に記載が可能です。
コマンドファイル内の任意の場所
スクリプトの"%Unm_DefineStart%"記載行から"%Unm_DefineEnd%"記載行の間
スクリプトの可変情報の変換異常時の動作
可変情報の変換が失敗した場合、可変情報は変換せずに変換前の文字列として扱われます。
スクリプトはコマンドファイルの可変情報が変換前の文字列の場合、そのコマンドと関連するコマンドを含めネットワークデバイスには送信しません。
可変情報の変換が失敗しただけでは、スクリプトの実行をエラーで復帰させません。
しかし、物理ラックサーバの隣接L2スイッチに関係する以下の可変情報の変換に失敗した場合、ネットワークデバイスの構成情報等に問題があるため、スクリプトを実行せずエラーで復帰します。
%Unm_SwNode1%
%Unm_SwNode2%
%Unm_SwPort1%
%Unm_SwPort2%
スクリプトで使用する復帰コード
スクリプト実行結果が正常だったか異常だったかの判断は、スクリプトの復帰コードにより行います。
スクリプトで通知する復帰コードの値により、正常完了させたり、処理を失敗させリカバリー動作をさせたりします。
スクリプトで使用する復帰コードは以下のとおりです。
復帰コード | 復帰コードの意味 |
0 | スクリプトの処理は正常に完了。 |
4 | スクリプトの処理で異常を検出したが、スクリプトの再実行は可能な異常。(コネクション切断・タイムアウト検出など) |
8 | スクリプトの処理で異常を検出し、スクリプトの再実行は不可能な異常。(上記以外)
|
スクリプトの実行結果
スクリプトの実行処理の経過やスクリプト内での異常発生を認識するために、スクリプト内での処理内容を任意のファイルにlog出力するようにスクリプトを作成します。
出力されたlogの内容を参照することによりスクリプトの処理結果を確認することができます。
インフラ管理者のスクリプト作成の参考となるように、サンプルスクリプトではルールセットが格納されているフォルダー配下にlog出力しています。
内容を確認する場合、logファイルを任意の利用者フォルダーにコピーし、コピーしたlogファイルで確認を行ってください。
サンプルスクリプトが出力しているlogのファイル名については、「G.5.4 サンプルスクリプトのlogファイル」を参照してください。
注意
logについては、インフラ管理者がスクリプトの動作内容を検証する目的のものです。テナント利用者およびテナント管理者が参照することを考慮していません。このため、テナント間のガードはありません。
運用操作用ルールセットで使用するスクリプトファイルを除き、スクリプト実行結果の標準出力および標準エラー出力は行わないでください。標準出力および標準エラー出力するスクリプトを使用した場合、ネットワークデバイスの自動設定が、異常終了することがあります。
運用操作用ルールセットで使用するスクリプトファイルにおいて、スクリプトの実行結果の標準出力および標準エラー出力を行う場合、サンプルスクリプトと同じ処理方式にする必要があります。標準出力および標準エラー出力の処理方式を独自に作成した場合、運用操作スクリプトの実行結果の取得が行えず、L-Platformの運用操作が失敗することがあります。