変数設定値には、1 つ以上の外部コンポーネント置換参照を含めることができます。外部コンポーネント置換参照は、次のいずれか 1 つです。
:[primary-component:varname]
:[primary-component:secondary-component-list:varname]
外部コンポーネント置換参照には空白が含まれないことに注意してください。
primary-component は次のいずれか 1 つです。
explicit-external-component
system-service-component
system-type-component
targetable-component
secondary-component
secondary-component は次のいずれか 1 つです。
nested-component
toplevel-component
dependee-component
container-component
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 つです。
component – 生成コンテキストに含まれている現在のターゲットホストを指定します。
component(host-redirect) – host-redirect によってホスト名を参照します (「ホストリダイレクト」を参照)。
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> ターゲッタと類似しています。『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の「インストール済みコンポーネントターゲッター」を参照してください。
targetable-component の構文は、次のとおりです。
targetableComponent
targetableComponent(host-redirect)
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-component は primary-component としての使用に限定されます。primary-component として使用する場合は、コンポーネント変数のデフォルト値またオーバーライド変数設定として使用することはできません。これは、変数の評価時点では、依存関係がまだ埋まれていないからです。
container-component は、現在のコンポーネントが入れ子の参照として含まれるコンポーネントを指定します。
container-component の構文は、次のとおりです。
container |
別の「コンテナ」コンポーネントにより、入れ子コンポーネントとしてすでにインストールされているコンポーネントに、外部コンポーネント置換参照が含まれる場合、container-component は、primary-component としての使用に限定されます。
外部コンポーネント置換参照の値は、最初に、primary-component が参照するコンポーネントを解決することで計算されます。secondary-component を primary-component として使用している場合は、primary-component を解決するときに使用される最初の現在のコンポーネントとして、外部コンポーネント置換参照を含むコンポーネントが使用されます。さらに、primary-component によって解決されたコンポーネントが、新しい現在のコンポーネントになります。次に、secondary-component-list に含まれている各 secondary-component が、最後に解決されたコンポーネントを現在のコンポーネントとして使用することで解決されます。最後に、プロビジョニングシステムは最後に解決されたコンポーネントで変数 varname を検索して返します。
外部コンポーネント置換参照の値は、コンポーネントのインストール時に参照先コンポーネントに指定されていた変数の値に基づいて計算されます。インストール済みのコンポーネントで宣言されていない変数、またはターゲットホストにインストールされていないコンポーネントは、参照することはできません。また、外部コンポーネント置換参照を宣言したコンポーネントまたはプランがアクセスできない変数を参照することもできません。変数にアクセスできるのは、その変数がアクセス可能なアクセスモードで宣言され、宣言するコンポーネントがアクセス可能で、なおかつそのコンポーネントに到達するまでにたどる基本コンポーネントと二次コンポーネントのそれぞれがアクセス可能な場合に限られます。
外部コンポーネント置換参照は、プランの実行開始時ではなく、実行中に検出された時点で計算されます。したがって、プランでそれまでに実行されたステップに応じて、参照対象である、実際にインストールされたコンポーネントが変化する可能性があります。さらに、現在のターゲットホスト以外のホストにインストールされたコンポーネントを参照する場合は、他方のホストで同時に実行されている他のプランによって影響を受ける可能性があります。予測可能な結果を保証するには、現在のプラン実行のターゲットセットに含まれているホストに参照を限定してください。これらのホストは確実にロックされているからです。さらに、再ターゲットまたはシリーズの実行モードを使用することによって、プラン内の外部参照を受けるホストでの <install> または <uninstall> 動作の同期を取ります。
次に、明示的な外部コンポーネントを使用する、外部コンポーネント置換変数参照の例を示します。
:[component:installApache:sys.label] :[component:jdk#1.3:classpath] :[component:webApp#2.4@{/usr/local}:bannerColor] |
次の例で、プロビジョニングシステムは、現在のターゲットホストのルート物理ホストにインストールされたコンポーネントを解決します。
:[component(/):IIS global settings:install_path] |
次の例では、webAppPath は、生成コンテキストの関連コンポーネントに設定された、単純置換変数の名前に解決されます。外部参照対象のコンポーネントで定義されている変数ではありません。
:[component:webApp@{:[webAppPath]}:bannerColor] |
次に、targetableComponent を使用する外部コンポーネント置換変数参照の例を示します。
:[targetableComponent:hostName] :[targetableComponent(host1):port] |
次に、nested-component と toplevel-component を使用する外部コンポーネント置換変数参照の例を示します。
:[nestedRef:ref1:sys.label] :[toplevelRef:ref2:sys.name] :[toplevelRef(/):ref3@{/usr/local}:var1] |
次に、system-type-component と system-service-component を使用する、外部コンポーネント置換変数の例を示します。
:[systemService:com.sun.windows#Windows SS:classPath] :[systemType:com.sun.weblogic#WL Target Type:serverName] :[systemType(..):MyType@{/tmp}:var1] |
次に、dependee-component を使用する外部コンポーネント置換変数参照の例を示します。
:[dependee:app2domain:domainName] |
次に、container-component を使用する外部コンポーネント置換変数参照の例を示します。
:[container:sys.installPath] |
次に、連鎖型コンポーネント参照の例を示します。この参照では、現在のターゲットコンポーネントが別のコンテナコンポーネントの入れ子コンポーネントとしてインストールされているものとします。container: 部分は現在のコンポーネントが含まれるコンポーネントに解決されます。この例では、X になります。nestedRef:ref1 部分は、ref1 というコンポーネント参照を使用し、コンポーネント X によって参照されるコンポーネントに解決されます。それがコンポーネント Y です。toplevelRef:ref1 部分は、ref1 というコンポーネント参照を使用し、コンポーネント Y が参照するコンポーネントに解決されます。これはコンポーネント Z です。最後に、プロビジョニングシステム がコンポーネント Z によって定義された label 属性の値を解決して使用します。
:[container:nestedRef:ref1:toplevelRef:ref1:sys.label] |