SSH ワークフローの作成

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:4分
  • VM の電源をオフにするために必要な SSH ワークフローを作成します。作成済みの SSH カスタムアクティビティを使用します。

    始める前に

    • SSH カスタムアクティビティがすでに作成されている
    • 必要なロール:ワークフローデザイナーまたはアドミニストレーター

    このタスクについて

    ワークフローを作成する場合、それをテーブルおよびアクティビティに関連付けます。
    • グローバルレベルのテーブルまたはアプリケーションレベルのテーブルにワークフローを作成できます。グローバルテーブルを使用して、ワークフローをすべての ServiceNow アプリケーションで使用できるようにします。ここでは、クラウドプロビジョニングとガバナンス にテーブルを使用するため、このワークフローはそのアプリケーションでのみ使用できます。
    • ワークフローは、ワークフローエディターまたはアクティビティデザイナーから作成できます。ここでは、アクティビティデザイナーが使用されます。

    手順

    1. アクティビティデザイナーで、右側の [ワークフロー] タブを選択し、[+] (プラス記号) をクリックして新しいワークフローを追加します。
    2. [新規ワークフロー] ウィンドウで、次の手順を実行します。
      1. ワークフローの一意の名前を入力します。
      2. [テーブル] ドロップダウンから、使用するテーブルを選択します。
        ワークフローを使用して VM の電源をオフにするため、[仮想マシンインスタンス cmdb_ci_vm_instance] を検索して使用します。
      3. [Submit] をクリックします。
    3. キャンバスにワークフローが表示されたら、次の手順を実行します。
      1. ワークフローの始点と終点の間の接続線を削除します。
      2. 詳細のキャンバスを右クリックし、[入力の編集] を選択します。
      3. 次の入力を作成します。
        注:
        [ラベル] フィールドからではなく、[列] フィールドから入力名を取得します。ワークフローがグローバルレベルのテーブルに関連付けられている場合、[列] フィールドの入力名にはプリフィックス u_ が付きます (u_ipaddress)。ここでは、テーブルはアプリケーションレベルなので、プリフィックスは必要ありません。
        表 : 1. ワークフロー入力
        タイプ ラベル 列 (自動的に追加) 最大長
        文字列 IPAddress ipaddress 100
        文字列 CredentialTag credentialtag 100
      4. [送信] をクリックします。
    4. キャンバスを右クリックし、[要素を追加] を選択します。
    5. [バージョン] ウィンドウで、SSH カスタムアクティビティの作成 で前に作成したアクティビティを検索して選択します。
    6. そのアクティビティの [新規アクティビティ] ウィンドウ (ワークフローアクティビティの新規レコード [Diagrammer ビュー]) で、次の手順を実行します。
      1. アクティビティの名前を入力します。
      2. [ホスト] フィールドに、アクティビティが予期する入力マッピングを入力します。

        つまり、ホストの IP アドレス (${workflow.inputs.u_ipaddress}) です。

        この式を IP アドレスに使用します。

        $(Script:CMPVMUtils.getReachableIp[arg=$(Stack.items[Virtual Server].attributes[sys_id])])

      3. [コマンド] フィールドに、shutdown -h now と入力します。
      4. [認証情報タグ] フィールドに、${workflow.inputs.u_credentialtag} と入力します。

        この式を使用して、認証情報タグを取得します。

        $(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])

      5. [Submit] をクリックします。
        アクティビティはワークフローキャンバスに表示されます。
    7. キャンバスを右クリックし、[コアアクティビティを追加] を選択して、スクリプト実行アクティビティを追加します。
    8. [ワークフローアクティビティ定義] ウィンドウで、[スクリプトを実行] を検索して選択します。
    9. [新規ワークフロー] の [スクリプトを実行] ウィンドウで、次の手順を実行します。
      1. アクティビティの名前を入力します。
      2. [スクリプト] フィールドに (環境に適した) スクリプトを切り取って貼り付けます。

        このスクリプトは、シャットダウン後に VM のステータスを更新します。

        スクリプト例:
        if ( gs.nil(data.get(3).error)) {
                            current.state = 'off';
                            current.setWorkflow(false);
                            current.update();
        }
        
      3. [送信] をクリックします。
    10. キャンバスで、開始点、アクティビティ、実行スクリプト、および終了点の間のコネクターを接続します。
    11. [公開] をクリックして、ワークフローを使用可能にします。
    12. ワークフロー検証を使用してワークフローを検証します。
      注:
      システムでは、current.update() の使用は推奨されません。これは無視できます。