SSH ワークフローの作成
VM の電源をオフにするために必要な SSH ワークフローを作成します。作成済みの SSH カスタムアクティビティを使用します。
始める前に
- SSH カスタムアクティビティがすでに作成されている
- 必要なロール:ワークフローデザイナーまたはアドミニストレーター
このタスクについて
ワークフローを作成する場合、それをテーブルおよびアクティビティに関連付けます。
- グローバルレベルのテーブルまたはアプリケーションレベルのテーブルにワークフローを作成できます。グローバルテーブルを使用して、ワークフローをすべての ServiceNow アプリケーションで使用できるようにします。ここでは、クラウドプロビジョニングとガバナンス にテーブルを使用するため、このワークフローはそのアプリケーションでのみ使用できます。
- ワークフローは、ワークフローエディターまたはアクティビティデザイナーから作成できます。ここでは、アクティビティデザイナーが使用されます。
手順
- アクティビティデザイナーで、右側の [ワークフロー] タブを選択し、[+] (プラス記号) をクリックして新しいワークフローを追加します。
-
[新規ワークフロー] ウィンドウで、次の手順を実行します。
- ワークフローの一意の名前を入力します。
-
[テーブル] ドロップダウンから、使用するテーブルを選択します。
ワークフローを使用して VM の電源をオフにするため、[仮想マシンインスタンス cmdb_ci_vm_instance] を検索して使用します。
- [Submit] をクリックします。
-
キャンバスにワークフローが表示されたら、次の手順を実行します。
- ワークフローの始点と終点の間の接続線を削除します。
- 詳細のキャンバスを右クリックし、[入力の編集] を選択します。
-
次の入力を作成します。
注:[ラベル] フィールドからではなく、[列] フィールドから入力名を取得します。ワークフローがグローバルレベルのテーブルに関連付けられている場合、[列] フィールドの入力名にはプリフィックス u_ が付きます (u_ipaddress)。ここでは、テーブルはアプリケーションレベルなので、プリフィックスは必要ありません。
表 : 1. ワークフロー入力 タイプ ラベル 列 (自動的に追加) 最大長 文字列 IPAddress ipaddress 100 文字列 CredentialTag credentialtag 100 - [送信] をクリックします。
- キャンバスを右クリックし、[要素を追加] を選択します。
- [バージョン] ウィンドウで、SSH カスタムアクティビティの作成 で前に作成したアクティビティを検索して選択します。
-
そのアクティビティの [新規アクティビティ] ウィンドウ (ワークフローアクティビティの新規レコード [Diagrammer ビュー]) で、次の手順を実行します。
- アクティビティの名前を入力します。
-
[ホスト] フィールドに、アクティビティが予期する入力マッピングを入力します。
つまり、ホストの IP アドレス (${workflow.inputs.u_ipaddress}) です。
この式を IP アドレスに使用します。
$(Script:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_id])])
- [コマンド] フィールドに、shutdown -h now と入力します。
-
[認証情報タグ] フィールドに、${workflow.inputs.u_credentialtag} と入力します。
この式を使用して、認証情報タグを取得します。
$(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])
-
[Submit] をクリックします。
アクティビティはワークフローキャンバスに表示されます。
- キャンバスを右クリックし、[コアアクティビティを追加] を選択して、スクリプト実行アクティビティを追加します。
- [ワークフローアクティビティ定義] ウィンドウで、[スクリプトを実行] を検索して選択します。
-
[新規ワークフロー] の [スクリプトを実行] ウィンドウで、次の手順を実行します。
- アクティビティの名前を入力します。
-
[スクリプト] フィールドに (環境に適した) スクリプトを切り取って貼り付けます。
このスクリプトは、シャットダウン後に VM のステータスを更新します。
スクリプト例:if ( gs.nil(data.get(3).error)) { current.state = 'off'; current.setWorkflow(false); current.update(); } - [送信] をクリックします。
- キャンバスで、開始点、アクティビティ、実行スクリプト、および終了点の間のコネクターを接続します。
- [公開] をクリックして、ワークフローを使用可能にします。
-
ワークフロー検証を使用してワークフローを検証します。
注:システムでは、current.update() の使用は推奨されません。これは無視できます。