N1 Grid Service Provisioning System 5.0 プランとコンポーネントの開発者ガイド

外部コンポーネント置換変数参照

変数設定値には、1 つ以上の外部コンポーネント置換参照を含めることができます。外部コンポーネント置換参照は、次のいずれか 1 つです。

外部コンポーネント置換参照には空白が含まれないことに注意してください。

primary-component は次のいずれか 1 つです。

secondary-component は次のいずれか 1 つです。

secondary-component-list は、コロンで区切った 1 つ以上の secondary-components の列です。

varname は、事前定義の置換変数名または参照先コンポーネントによって宣言される動的置換変数名のいずれかです。

明示的な外部コンポーネントの展開

explicit-external-component は、特定の場所の特定のホストにインストールされる予定のコンポーネントを明示的に指定します。インストール型コンポーネントターゲッタ <installedComponent> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

explicit-external-component の構文は次のとおりです。


component-target:explicit-component-reference

component-target では、特定のコンポーネントをインストールするホストを指定します。次のいずれか 1 つです。

explicit-component-reference は、component-target で指定したターゲットホストにすでにインストールされているコンポーネントに対する参照です。explicit-component-reference では最小限、インストールするコンポーネントの名前を含めますが、次のように、バージョンとインストールパスも指定できます。


full-component-name
full-component-name#version
full-component-name@{path}
full-component-name#version@{path}

full-component-name は、指定したコンポーネントに対する絶対参照または相対参照です。相対参照は、explicit-component-reference が含まれているプランまたはコンポーネントとの関係に基づいて展開されます。

path は、指定したコンポーネントの絶対インストールパス名、または拡張時に指定したコンポーネントの絶対インストールパスを表す置換変数参照です。path} 記号が含まれる場合は、}} シーケンスを使用してエスケープする必要があります。

システムサービスコンポーネントの展開

system-service-component は、現在のターゲットのルートphysical hostにインストールされる予定のシステムサービスコンポーネントを指定します。インストール型コンポーネントターゲッタ <systemService> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

system-service-component の構文は、次のとおりです。


systemService:system-service-name

システムサービスがプラグインによって定義される場合、定義するプラグインの名前を system-service-name の接頭辞にする必要があります。

システムタイプコンポーネントの展開

system-type-component は、特定の場所の特定のホストに最後にインストールした、特定のコンポーネントタイプから派生したコンポーネントを指定します。インストール型コンポーネントターゲッタ <systemType> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

system-type-component の構文は、次のとおりです。


systemType:component-type-name
systemType:component-type-name@{path}
systemType(host-redirect):component-type-name
systemType(host-redirect):component-type-name@{path}

path は省略可能です。path を指定する場合は、指定したコンポーネントの絶対インストールパス名または置換変数参照です。展開された参照は、指定したコンポーネントの絶対インストールパスを表します。path} 記号が含まれる場合は、}} シーケンスを使用してエスケープする必要があります。

host-redirect も省略可能です。コンポーネントのインストール先ホストを指定します。「ホストリダイレクト」を参照してください。

コンポーネントタイプがプラグインによって定義される場合、定義するプラグインの名前を component-type-name の接頭辞にする必要があります。

targetableComponent コンポーネントの展開

targetableComponent は、ターゲット可能コンポーネントに関連付けられる変数を参照し、<targetableComponent> ターゲッタと類似しています。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

targetable-component の構文は、次のとおりです。

host-redirect はコンポーネントのターゲットホストの名前です。指定しなかった場合、現在プランが実行されているホストが使用されます。これらの構文は、特定のコンポーネントのターゲットホストに関連付けられているターゲット可能コンポーネントに解決されます。「ホストリダイレクト」を参照してください。

二次コンポーネントの展開

入れ子になったコンポーネントの展開

nested-component は、現在のコンポーネントで宣言された入れ子のコンポーネント参照によって参照されるコンポーネントを指定します。インストール型コンポーネントターゲッタ <nestedRef> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

nested-component の構文は、次のとおりです。


nestedRef:component-reference-name

component-reference-name は、現在のコンポーネントで installMode=NESTED の場合、<componentRef> 要素の名前です。

nested-component を使用できるのは、現在のコンポーネントが複合コンポーネントの場合だけです。また、外部コンポーネント置換参照が複合コンポーネントに含まれる場合、primary-component としての使用に限定されます。primary-component として使用する場合は、コンポーネント変数のデフォルト値またオーバーライド変数設定として使用することはできません。これは、参照対象のコンポーネントが変数の評価時点ではまだインストールされていないからです。

上位レベルコンポーネントの展開

toplevel-component は、現在のコンポーネントで宣言された上位レベルコンポーネント参照によって参照されるコンポーネントを指定します。インストール型コンポーネントターゲッタ <toplevelRef> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

toplevel-component の構文は、次のとおりです。


toplevelRef:component-reference-name
toplevelRef:component-reference-name@{path}
toplevelRef(host-redirect):component-reference-name
toplevelRef(host-redirect):component-reference-name@{path}

component-reference-name は、現在のコンポーネントで installMode=TOPLEVEL の場合、<componentRef> 要素の名前です。

path は、指定したコンポーネントの絶対インストールパス名または置換変数参照です。展開された参照は、指定されたコンポーネントの絶対インストールパスを表します。path} 記号が含まれる場合は、}} シーケンスを使用してエスケープする必要があります。

host-redirect は、参照対象のコンポーネントがインストールされる予定のホストです。host-redirect の構文については、「ホストリダイレクト」を参照してください。

toplevel-component を使用できるのは、現在のコンポーネントが複合コンポーネントの場合だけです。また、複合コンポーネントに外部コンポーネント置換参照が含まれる場合、primary-component としての使用に限定されます。primary-component として使用する場合は、コンポーネント変数のデフォルト値またオーバーライド変数設定として使用することはできません。これは、参照対象のコンポーネントがすでにインストールされているからです。

依存先コンポーネントの展開

dependee-component は、<createDependency> ステップで生まれた依存関係の結果として、現在のコンポーネントが依存するコンポーネントを指定します。dependee-component には、インストール型コンポーネントターゲッタ <dependee> のコンポーネント解決セマンティックスが含まれます。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』「インストール済みコンポーネントターゲッター」を参照してください。

dependee-component の構文は、次のとおりです。


dependee:dependency-name

dependency-name は、現在のコンポーネントによって作成された依存関係の名前です。

コンポーネントに外部コンポーネント置換参照が含まれる場合、dependee-componentprimary-component としての使用に限定されます。primary-component として使用する場合は、コンポーネント変数のデフォルト値またオーバーライド変数設定として使用することはできません。これは、変数の評価時点では、依存関係がまだ埋まれていないからです。

コンテナコンポーネントの展開

container-component は、現在のコンポーネントが入れ子の参照として含まれるコンポーネントを指定します。

container-component の構文は、次のとおりです。


container

別の「コンテナ」コンポーネントにより、入れ子コンポーネントとしてすでにインストールされているコンポーネントに、外部コンポーネント置換参照が含まれる場合、container-component は、primary-component としての使用に限定されます。

外部コンポーネント置換参照の解決

外部コンポーネント置換参照の値は、最初に、primary-component が参照するコンポーネントを解決することで計算されます。secondary-componentprimary-component として使用している場合は、primary-component を解決するときに使用される最初の現在のコンポーネントとして、外部コンポーネント置換参照を含むコンポーネントが使用されます。さらに、primary-component によって解決されたコンポーネントが、新しい現在のコンポーネントになります。次に、secondary-component-list に含まれている各 secondary-component が、最後に解決されたコンポーネントを現在のコンポーネントとして使用することで解決されます。最後に、プロビジョニングシステムは最後に解決されたコンポーネントで変数 varname を検索して返します。

外部コンポーネント置換参照の値は、コンポーネントのインストール時に参照先コンポーネントに指定されていた変数の値に基づいて計算されます。インストール済みのコンポーネントで宣言されていない変数、またはターゲットホストにインストールされていないコンポーネントは、参照することはできません。また、外部コンポーネント置換参照を宣言したコンポーネントまたはプランがアクセスできない変数を参照することもできません。変数にアクセスできるのは、その変数がアクセス可能なアクセスモードで宣言され、宣言するコンポーネントがアクセス可能で、なおかつそのコンポーネントに到達するまでにたどる基本コンポーネントと二次コンポーネントのそれぞれがアクセス可能な場合に限られます。

外部コンポーネント置換参照は、プランの実行開始時ではなく、実行中に検出された時点で計算されます。したがって、プランでそれまでに実行されたステップに応じて、参照対象である、実際にインストールされたコンポーネントが変化する可能性があります。さらに、現在のターゲットホスト以外のホストにインストールされたコンポーネントを参照する場合は、他方のホストで同時に実行されている他のプランによって影響を受ける可能性があります。予測可能な結果を保証するには、現在のプラン実行のターゲットセットに含まれているホストに参照を限定してください。これらのホストは確実にロックされているからです。さらに、再ターゲットまたはシリーズの実行モードを使用することによって、プラン内の外部参照を受けるホストでの <install> または <uninstall> 動作の同期を取ります。


例 6–2 外部コンポーネント置換変数参照の使用