Cloud Assembly でクラウド テンプレートを作成する場合、リソース タイプ パレットには、サポートされているクラウド アカウントおよび統合エンドポイントのリソース タイプが含まれます。リソース タイプの拡張されたリストに基づいてクラウド テンプレートを作成することが必要になる場合があります。カスタム リソース タイプを作成してデザイン キャンバスに追加し、デザインおよび展開のニーズをサポートするクラウド テンプレートを作成できます。

カスタム リソース名とリソース タイプ

クラウド テンプレート リソース タイプ パレット内では、カスタム リソース名でカスタム リソースを識別します。

カスタム リソースのリソース タイプは Custom. で始まる必要があり、各リソース タイプは一意にする必要があります。たとえば、Active Directory ユーザーを追加するカスタム リソースのリソース タイプとして Custom.ADUser を設定することができます。テキスト ボックスに Custom. が含まれているかどうかは検証されませんが、この文字列は削除しても自動的に追加されます。

拡張性アクション カスタム リソース

カスタム リソース タイプを使用すると、クラウド テンプレートで拡張性アクションを使用して複雑なアプリケーションを構築できます。たとえば、拡張性アクションと Amazon Web Services および Microsoft Azure のネイティブ統合を使用して、それぞれのサービスと簡単に統合できます。拡張性アクション カスタム リソースを作成するには、カスタム リソース エディタで [基準] オプションをクリックし、[ABX ユーザー定義スキーマ] を選択します。

拡張性アクション カスタム リソース向けのライフサイクル アクション

カスタム リソース向けに拡張性アクションを使用する場合は、次のライフサイクル アクションを定義できます。

  • [作成]:この拡張性アクションは、展開の開始時に呼び出されます。
  • [読み取り]:この拡張性アクションは、展開されたリソースの最新の状態を取得するために使用されます。
  • [更新]:この拡張性アクションは、クラウド テンプレート プロパティが更新されるときに呼び出されます。このアクションは、プロパティが recreateOnUpdate でマークされていない場合にのみトリガされます。
  • [破棄]:この拡張性アクションは、展開が削除されるときに呼び出されます。

これらのライフサイクル アクションは、既存の拡張性アクションから手動で選択することも、[アクションの生成] を選択して自動的に生成することもできます。[アクションの生成] を選択する場合は、新しい拡張性アクションをどのプロジェクト内に生成するかを指定する必要があります。

注: 各アクションの横にある [開く] オプションをクリックすると、ライフサイクル アクションに関連付けられている拡張性アクションを編集できます。

vRealize Orchestrator 個のカスタム リソース

vRealize Orchestrator カスタム リソースは SDK インベントリ タイプに基づいており、必要な SDK タイプのインスタンスを出力する vRealize Orchestrator ワークフローによって作成されます。 PropertiesDatestringnumber などのプリミティブ タイプは、カスタム リソース タイプの作成ではサポートされていません。
注: SDK オブジェクト タイプは、プラグイン名とタイプ名の分離に使用されるコロン(「:」)によって、他の vRealize Orchestrator プロパティ タイプと区別できます。たとえば、 AD:UserGroup は、Active Directory ユーザー グループの管理に使用される SDK オブジェクト タイプです。
vRealize Orchestrator の組み込みワークフローを使用することも、独自のワークフローを作成することもできます。Anything-as-a-Service (XaaS) ワークフローを作成するために vRealize Orchestrator を使用すると、展開時に Active Directory ユーザーをマシンに追加するクラウド テンプレートを作成したり、カスタムの F5 ロード バランサを展開に追加したりすることができます。 vRealize Orchestrator のカスタム リソースを作成するには、カスタム リソース エディタで [基準] オプションをクリックし、 [vRO インベントリ] を選択します。

vRealize Orchestrator のカスタム リソースの外部タイプ

外部タイプ プロパティは、vRealize Orchestrator のカスタム リソースのタイプを定義します。Cloud Assembly のカスタム リソース タイプで作成ワークフローを選択すると、その下に外部タイプのドロップダウンが表示されます。ドロップダウンには、vRealize Orchestrator ワークフローの出力パラメータから選択された外部タイプのプロパティが含まれています。ドロップダウンに含まれる選択されたワークフローの出力プロパティは、VC:VirtualMachineAD:UserGroup などの非アレイの SDK オブジェクト タイプである必要があります。

注: 動的タイプのプラグインを使用するカスタム ワークフローを作成する場合は、 DynamicTypesManager.getObject() メソッドを使用して変数が定義されていることを確認します。

カスタム リソース タイプを定義するときは、選択した外部タイプの可用性の範囲も定義します。選択した外部タイプは次のように定義できます。

  • プロジェクト間で共有。
  • 選択したプロジェクトでのみ使用可能。

定義された範囲ごとに、特定の外部タイプ値を持つ 1 つのカスタム リソース タイプのみを設定できます。たとえば、プロジェクトに外部タイプとして VC:VirtualMachine を使用するカスタム リソースを作成した場合、同じ外部タイプを使用する同じプロジェクトに対して別のカスタム リソースを作成することはできません。また、同じ外部タイプを使用する 2 つの共有カスタム リソースを作成することもできません。

vRealize Orchestrator ライフサイクル アクションの検証

作成、削除、更新ワークフローをカスタム リソースにライフサイクル アクションとして追加すると、Cloud Assembly は、選択したワークフローに適切な入力および出力プロパティ定義があることを検証します。

  • 作成ワークフローには、SSH:HostSQL:Database などの SDK オブジェクト タイプの出力パラメータが必要です。選択したワークフローが検証で正常と判定されなかった場合、更新または削除ワークフローを追加したり、変更をカスタム リソースに保存したりすることはできません。
  • 削除ワークフローには、カスタム リソースの外部タイプと一致する SDK オブジェクト タイプの入力パラメータが必要です。
  • 更新ワークフローには、カスタム リソースの外部タイプと一致する SDK オブジェクト タイプの入力および出力パラメータの両方が必要です。

カスタム リソース プロパティ スキーマ

カスタム リソース プロパティ スキーマを編集および表示するには、 [プロパティ] タブを選択します。スキーマには、名前、データ タイプ、プロパティ タイプに加え、利用できる場合は指定されたプロパティの説明も含まれています。スキーマは、指定されたプロパティがクラウド テンプレートで必須またはオプションのいずれであるかも定義します。
注: 拡張性アクション カスタム リソースのプロパティ スキーマの場合、クラウド テンプレートにはすべてのプロパティが必要です。
vRealize Orchestrator ワークフローをカスタム リソースに追加すると、入力および出力パラメータがプロパティとして追加されます。拡張性アクション カスタム リソースの場合は、 [プロパティ] タブで、拡張性アクション カスタム リソースのプロパティ スキーマを手動で作成する必要があります。
注: 拡張性アクション カスタム リソースのスキーマで定義されているプロパティは、カスタム リソースの [読み取り] アクションで返された値と同じであり、同じ名前を持つ必要があります。たとえば、スキーマに domain および location プロパティが含まれている場合、 [読み取り] アクションでも同じ名前の同じプロパティが返される必要があります。
このタブでは、 vRealize Orchestrator のプロパティや拡張性アクション ベースのカスタム リソースを変更したりフォーマット設定したりすることもできます。たとえば、特定のプロパティの表示名を変更したり、制約を追加したりできます。
注: プロパティ スキーマで、配列フィールドのアイテム セクションまたはオブジェクト フィールドのプロパティ セクションに制約を追加する場合は、これらの制約が検証済みであることを確認します。不適切に適用された制約は、カスタム リソースで問題を引き起こす可能性があります。たとえば、数値配列に最大値の制約を追加する場合は、その制約がプロパティのデフォルト値に反していないことを確認する必要があります。

カスタム リソースのプロパティ スキーマを編集するには、[プロパティ] タブに移動し、[コード] タブまたは [フォーム] タブを使用します。

  • [コード]:YAML コンテンツを使用してプロパティ スキーマを編集します。このオプションを選択した場合、プロパティ スキーマは JSON スキーマを使用して定義されます。
  • [フォーム]:拡張性アクション カスタム リソースの場合は、[新しいプロパティ] をクリックし、名前、表示名、説明、プロパティ タイプ、デフォルト値を構成して、新しいプロパティを作成します。vRealize Orchestrator カスタム リソースの場合は、[プロパティの削除] をクリックして、必須でないプロパティや非計算プロパティをスキーマで非表示にすることもできます。

Day 2 操作のカスタム申請フォーム

さまざまなタイプのリソース プロパティを追加または変更することにより、カスタム リソースに含まれる Day 2 操作の申請フォームを効率化できます。

たとえば、申請フォームの入力パラメータの値を、展開名やプロジェクト名を取得する vRealize Orchestrator アクションなどの外部ソースにバインドできます。特定の入力パラメータの値を、同じ申請フォームに含まれる他の 2 つのテキストボックスの計算値にバインドすることもできます。

注: この機能は、カスタム リソースとリソース アクションの両方で使用できます。申請フォームの入力プロパティの値をカスタマイズするには、カスタム リソースまたはリソース アクション エディタの [要求パラメータ] 画面の [値] タブを使用します。

Day 2 操作の申請フォームの検証

Day 2 操作の申請フォームは、外部検証を追加することで検証できます。外部検証を使用すると、検証パラメータが満たされるまで、ユーザーは申請フォームを送信できなくなります。外部検証は、カスタム リソースまたはリソース アクション エディタの [要求パラメータ] ページにある [検証] タブから追加できます。タブを選択したら、[Orchestrator 検証] 要素をキャンバスにドラッグして、検証に使用する vRealize Orchestrator アクションを追加できます。

たとえば、ユーザー パスワードを変更するための Day 2 操作を含むカスタム リソースを作成できます。このような使用事例では、SecureString タイプを使用する newPassword および confirmPassword 入力パラメータが含まれている vRealize Orchestrator アクションを追加できます。

注: これは、ユーザー パスワードを検証するためのサンプル スクリプトです。実際に使用する場合は、別のスクリプトを使用できます。
if (newPassword != confirmPassword) {
    return 'passwords are different';
}
if (newPassword.lenght < 7) {
    return 'password must be at least 10 symbols';
}
return null;