vRealize Orchestrator で使用するスクリプトを作成する際には、スクリプトの構造とフォーマットが正しいことを確認する必要があります。

サポート対象のランタイム

vRealize Orchestrator アクションとワークフローを開発する場合は、次のランタイムを使用できます。

  • Python 3.7
  • Node.js 14
    注: Node.js 14 ランタイムは廃止され、 End-of-life (EOL) に達すると、 vRealize Orchestrator から削除されます。
  • Node.js 18
  • PowerCLI 11/Powershell 6.2
  • PowerCLI 12.3.0/Powershell 7.1
    注: PowerCLI ランタイムには PowerShell と次のモジュールが含まれています:VMware.PowerCLI、PowerNSX、PowervRA。

新しいランタイムには任意のカスタム ソース コードを追加できますが、コンテキストと入力を受け入れ、結果を vRealize Orchestrator エンジンとの間で受け渡しするには、適切な関数フォーマットを使用する必要があります。

スクリプト作成の推奨事項

スクリプト作成タスクを簡素化するために、[スクリプト可能タスク] 要素をワークフローのスキーマに追加できます。vRealize Orchestrator アクションを使用して、より複雑なスクリプト作成タスクを実行できます。

アクションを使用することによるメリットは次の 2 つです。

  • ワークフローとは別にアクションを作成、更新、インポート、およびエクスポートできます。
  • アクションはスタンドアローンのオブジェクトで、独自の環境で実行およびデバッグが可能なため、開発プロセスをスムーズに進めることができます。アクションの実行およびデバッグを参照してください。

スクリプト関数の要件

スクリプト関数のデフォルト名は handler です。関数は、コンテキストと入力の 2 つの引数を受け入れます。コンテキストは、システム情報を含むマップ オブジェクトです。たとえば、vroURL には、呼び出す vRealize Orchestrator インスタンスの URL を含めることができます。また、executionId には、ワークフロー実行のトークン ID を含めます。

入力は、アクションに提供されるすべての入力を含むマップ オブジェクトです。たとえば、myInput というアクションで入力を定義した場合、ランタイムに応じて、inputs.myInputinputs["myInput"] のような入力引数からアクセスできます。関数から返るものはすべて、アクションの結果です。したがって、アクションの戻り値のタイプは、vRealize Orchestrator でスクリプトが返すコンテンツのタイプに対応している必要があります。プリミティブ型の数値を返す場合は、アクションの戻り値のタイプを数値タイプにする必要があります。文字列を返す場合、アクションの戻り値のタイプは文字列タイプにする必要があります。複雑なオブジェクトを返す場合は、Properties または Composite Type のいずれかに戻り値のタイプをマッピングする必要があります。アレイにも同様の原則が適用されます。

Python、Node.js、PowerShell ランタイムでサポートされている入力および出力パラメータ タイプ:

  • String
  • Number
  • Boolean
  • Date
  • Properties
  • Composite Type

エントリ ハンドラの定義

デフォルトでは、エントリ ハンドラの値は handler.handler です。この値は、vRealize Orchestrator エンジンが、handler という関数を含む handler.pyhandler.js または handler.ps1 という ZIP パッケージの最上位レベルのファイルを検索することを意味します。関数とハンドラ ファイルの名前の違いは、エントリ ハンドラの値に反映させる必要があります。たとえば、メイン ハンドラが index.js で、関数が callMe という名前だった場合、エントリ ハンドラの値は index.callMe に設定する必要があります。

外部 IDE でのランタイム スクリプトのデバッグ

vRealize Orchestrator は、外部 IDE での Python および Node.js スクリプトのデバッグをサポートしています。外部 IDE で PowerShell スクリプトをデバッグすることはできません。