N1 Grid Service Provisioning System ソフトウェアでは、substitution variablesおよびvariable settingsを使用することによって、あらゆるコンポーネントの配備をカスタマイズできます。
この章の内容は次のとおりです。
アプリケーションをコンポーネントとしてモデル化し、さまざまな環境で動作するようにカスタマイズできます。
たとえば、データベースアプリケーションを使用してオンラインカタログ販売を管理するとします。運用環境にアプリケーションを配備する前に、テスト環境でアプリケーションをテストします。この 2 つの環境で同じアプリケーションを実行しますが、構成は異なります。テスト環境にアプリケーションを配備する場合は、テスト用のデータベースを使用します。運用環境にアプリケーションを配備する場合は、運用版のデータベースを使用します。
使用するデータベースなど、アプリケーションに関する構成情報は、構成ファイルに格納できます。各環境をサポートするには、これらの構成ファイルをカスタマイズする必要があります。構成ファイルには、コンポーネントの配備時に変数設定値に置き換えられる置換変数を含めることができます。
置換変数は構成ファイルで使用できるだけではなく、プランとコンポーネントでも使用できます。たとえば、アプリケーションをインストールするディレクトリを置換変数で指定できます。プロビジョニングシステムでは、配備環境ごとに個別の変数設定を定義して管理できます。
構成ファイル、プラン、またはコンポーネント中の置換変数参照により、次の種類の値を取得できます。
ユーザー定義の値
名前、ラベルなど、コンポーネント固有の値
IP アドレスなど、ターゲットホスト固有の値
ユーザー定義の、プロビジョニングシステムのホスト固有の値
セッション変数の値
インストール済みコンポーネントに関連付けられた値
プロビジョニングシステムでは、configuration generation engineを使用して、置換変数参照を適切な変数設定値に置き換えます。このエンジンは、ホストリポジトリおよびコンポーネントリポジトリと対話し、プランを実行するたびに値を解決してコンポーネントを配備します。
プロビジョニングシステムには変数設定を格納しておくためのリポジトリがあるので、あとで値を再利用できます。コンポーネントのインストールとプランの実行に使用された変数設定を表示すると、変数の状態を調べられます。インストール済みコンポーネントとの比較実行時に置換変数の状態を調べる場合にも、このリポジトリを使用します。
複数のホストに同じアプリケーションを配備するプランを実行する場合は、構成の生成を使用することによって、置換変数を各ホストに適した値に自動的に置き換えることができます。
その場合、コンポーネントに置換変数定義を追加します。置換変数定義はたとえば、アプリケーションのインストール先ディレクトリを設定する 1 つの手段として使用できます。プロビジョニングシステムを使用することにより、次のように、各ターゲットホスト上で、アプリケーション配備に関してそれぞれ異なる変数設定を定義して管理できます。
コンポーネントのバージョンごとに、独自の変数定義を宣言できます。
コンポーネントのバージョンごとに、独自の変数設定 (前のバージョンからインポートされることもある) があります。
任意の変数設定を使用して各コンポーネントをインストールできます。
アプリケーションのインストール時にプロビジョニングシステムが置換する値は、次のいずれかになります。
ユーザー指定の値
名前、ラベルなど、コンポーネント固有の値
インストール済みのコンポーネントに関連付けられた値
セッション変数の値
IP アドレス、ユーザー定義のホスト変数など、ターゲットホスト固有の値
変数が置換されるのは、ターゲットホスト上でターゲットステップが実行されたときです。ステップはターゲットホストにインストールする、またはインストール済みのプランまたはホストに組み込めます。ターゲットホストとコンポーネントに関連付けられた状態がある場合は、その状態に基づいて個々の置換変数値が決定されます。状態に含まれる可能性がある情報は、次のとおりです。
ターゲットコンポーネント – 処理の実行対象となるコンポーネント
ターゲットホスト – ターゲットステップが実行されている現在のホスト
ターゲット変数設定のソース – コンポーネントのインストール時に定義されていたデフォルト値を書き換える、名前と値の組み合わせのコレクション
ローカル変数 – 囲い込みブロックまたはプランで宣言した変数など、ターゲットステップそのものに含まれるあらゆる変数
変数置換エンジンは、String 形式または Reader 形式であれば、あらゆるテキストベースの入力ソースを処理します。ただし、実際には入力ソースとして使用されるのは、次のエンティティだけです。
構成タイプのリソースファイル
CLI コマンドに対する入力 (オンデマンド方式で変数置換を実行する )
コンポーネント属性とプラン属性の一部 (<installSteps> 要素の defaultInstallPath 属性、<execNative> ステップの command 属性など)
『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 2 章「コンポーネントと単純プランにより使用される共有スキーマ」、『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 3 章「コンポーネントのスキーマ」、および『N1 Grid Service Provisioning System 5.0 XML スキーマリファレンスガイド』の第 4 章「プランのスキーマ」を参照してください。
コンポーネント、プラン、変数設定、および構成可能なリソース内で、次の種類の変数を参照できます。
単純置換変数
外部コンポーネント置換変数
セッション置換変数
ターゲット置換変数
入力ソースには、任意の数の単純置換変数参照を含めることができます。単純置換変数の構文は、次のとおりです。
:[variable] |
variable は次のいずれかです。
ローカル変数名。ローカル変数名は、プランのステップ、およびコンポーネントのインストール、アンインストール、スナップショット、および制御サービスブロックに組み込まれたステップで参照できます。
パラメータ名。 パラメータはプランのステップで、およびコンポーネントのインストール、アンインストール、スナップショット、および制御サービスブロックに組み込まれたステップで参照できます。
事前定義されたコンポーネント変数名。事前定義されたコンポーネント変数名を使用できるのは、コンポーネントに関連付けられていて、プランには関連付けられていない入力ソース内に限られます。
事前定義されたコンポーネント変数名は、変数参照がベースコンポーネントで行われる場合でも、常に、インストールされている実際のコンポーネントに関連付けられて解決されます。アクセシビリティの観点から、事前定義されたコンポーネント変数は、 PUBLIC 変数として扱われます。
名前の一覧については、「事前定義されたコンポーネント変数名」を参照してください。
動的コンポーネント変数名。コンポーネントはローカルで宣言された変数と継承された変数の両方を参照できます。参照のために置換される値は、関連する変数設定ソースのオーバーライド値または変数のデフォルト値のどちらかです。使用される値は、置換の前に展開されます。
動的コンポーネント変数名は、ターゲットコンポーネントに関連付けられるコンポーネントが宣言または継承します。この場合、変数参照で置換する値は、関連するオーバーライド変数設定値またはコンポーネントによって定義されたデフォルト値のどちらかです。この変数の値は、置換の前に展開されます。
事前定義されたコンポーネント変数名は、次のように、生成コンテキストの関連するコンポーネント属性を参照します。
sys.name – コンポーネント名
sys.description – コンポーネントの説明
sys.label – コンポーネントのラベル
sys.softwareVendor – コンポーネントでモデル化したアプリケーションの作成元であるソフトウェアベンダー
sys.author – コンポーネントの作成者
sys.path – コンポーネントのパス
sys.path 変数は、コンポーネントの path 属性に類似していますが、後続スラッシュ (/) が含まれます。sys.path を sys.name 変数と直接結合することによって、コンポーネントの完全な名称を作成できます。
:[sys.path]:[sys.name] |
sys.rsrcInstallPath – コンポーネントリソースのインストール先
sys.rsrcInstallPath 変数は、コンポーネントをインストールする、またはコンポーネントがインストールされている remote agent のファイル形式になります。この変数を使用できるのは、単純コンポーネントのみです。この変数の値は、ほかの動的コンポーネント変数の計算を必要とする場合があるため、コンポーネント変数のデフォルト値または変数設定のオーバーライド値に sys.rsrcInstallPath を使用することはできません。また、この変数は、<component> installPath 属性または <resourceRef>/<installSpec> 要素の属性値として使用することもできません。これらの制約によって、参照が循環する可能性が排除されます。
sys.targetRefName – 関連付けられたコンポーネントのターゲットホスト名
sys.targetRefName 変数は、targetable componentsにのみ定義されます。コンポーネントのターゲットホストは、ターゲット可能コンポーネントの <targetRef> 要素の hostName 属性の解決された値によって定義されます。コンポーネント変数が sys.targetRefName 値の計算に使用される可能性があるので、コンポーネントのターゲットホストをコンポーネント変数値で単純置換変数として使用することはできません。この変数は通常、<retarget> ステップと組み合わせて使用し、ターゲット可能コンポーネントにコンポーネントをインストールしたり、またはターゲット可能コンポーネントに含まれているコンポーネントを操作したりします。
事前定義されたコンポーネント変数は、変数参照がベースコンポーネントで行われる場合でも、常に、インストールされている実際の コンポーネントに関連付けられて解決されます。事前定義されたコンポーネント変数は、PUBLIC 変数として扱われます。
入力ソースに :[ を含める場合は、 :[[ を使用してエスケープする必要があります。:[[ を検出するたびに、構成生成機能が :[ に置き換えます。
たとえば、プロビジョニングシステムに box の値を置換させるのではなく、:[box] を字句どおりに含める場合は、:[[box] を使用します。
入力ソースが XML で作成されたコンポーネントの属性である場合、値は XML ベースのエスケープシーケンスに関する次の規則が適用されます。
引用符 ("") を得るには、" シーケンスを使用します。
アポストロフィー (') を得るには、' シーケンスを使用します。
小記号 (<) を得るには、< シーケンスを使用します。
大記号 (>) を得るには、> シーケンスを使用します。
アンパサンド (&) を得るには、& シーケンスを使用します。
これらのエスケープ規則は、プロビジョニングシステムのブラウザインタフェース、構成リソースファイル、または構成生成 CLI コマンドの入力によるオーバーライド値には当てはまりません。
置換変数参照が変数設定値によって置き換えられるときには、値がそのつど展開されてから置換されます。この展開が必要なのは、値そのものに単純置換変数の参照が含まれている場合があるからです。値の置換を禁止するには、入力ソースを :[[ でエスケープします。
デフォルト置換値またはオーバーライド置換値、パラメータのデフォルト値、およびローカル変数のデフォルト値で使用できるのは、ホストおよび外部コンポーネント置換参照だけです。このような参照は、その他の入力ソースでは認められません。
変数設定値における単純置換変数参照の構文は、入力ソースの場合と同じです。
:[varname] |
この場合、参照する変数名が、参照が含まれる変数より先に宣言されていなければなりません。この制約によって、参照の循環が防止されます。
派生コンポーネントの場合、ベースコンポーネントから継承した値が、親での宣言順に従って先に展開されます。その後、ローカルの非オーバーライド変数が宣言された順に展開されます。継承した値を無効にするローカル変数は、継承値の展開順序と同じ順で継承値の代わりに展開されます。したがって、オーバーライド変数が参照できるのは、すでに宣言されているほかの継承変数またはオーバーライド変数だけです。たとえば、ベースコンポーネント A が x と y という変数を宣言するとします。さらに、派生コンポーネント B が変数 z と y を宣言します。コンポーネント B で変数が評価される順番は、コンポーネント A から継承した x、続いてコンポーネント B によってオーバーライドされた y、最後にコンポーネント B のローカル変数である z です。
次の表に、置換変数、対応する展開後の値、未展開の値の例を示します。
変数名 |
未展開の値 |
展開後の値 |
---|---|---|
foo |
silly |
silly |
bar |
:[foo] |
silly |
baz |
a :[foo] :[bar] example |
a silly silly example |
badFrob |
:[frob] |
エラー – 順参照 |
frob |
:[[foo] |
:[foo] |
compName |
:[sys.name] |
ターゲットコンポーネント名 |
badFoz |
:[foz] |
エラー – foz が未宣言 |
変数設定値には、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] |
Session variablesを使用すると、ユーザーセッションごとに 1 回ずつ、WebLogic 資格などのデータを入力できます。これらの変数の内容は、セキュリティを保護して保存することもできるので、ログインのたびにデータを再入力しなくてすみます。セッション変数は、置換変数を使用することによって、モデル化レベルで組み込まれます。
セッション置換変数参照の構文は、次のとおりです。
:[session:varname] |
varname はセッション変数名です。
セッション置換変数参照は、現在のユーザーセッションのセッション変数値に解決されます。現在のユーザーセッションで定義されていないセッション変数を解決しようとすると、エラーが発生します。セッション変数生成エラーが検出されると、ユーザーの現在のセッション変数セットに、値が空のセッション変数を追加することが試行されます。
セッション変数は、単純置換変数参照を使用できるところであれば、どこでも使用できます。しかし、別のセッション変数の値にセッション変数を使用することはできません。
sys:sessionID は、現在のユーザーセッションの ID に解決される、事前定義セッション変数です。システム sessionID 変数を使用すると、プランを実行したユーザーと同じ資格で、CLI を介して master server にコールバックするステップを作成できます。システム sessionID 変数は、config.allowSessionIDOnHosts 構成変数に基づき、特定のホストのコンテキストに限って解決できます。したがって、システム sessionID 変数を解決できるのは、現在の生成コンテキストのターゲットホストが config.allowSessionIDOnHosts 構成変数によって指定されたホストに含まれている場合だけです。
プランの実行時にコールバックで使用できるように CLI を設定する場合は、同じサーバーに Remote Agent と CLI Client をインストールする必要があります。最大限のセキュリティ保護を実現するには、Master Server と同じサーバー上に CLI Client と Remote Agent をインストールしてください。この場合、CLI を介してコールバックを行うプランおよびコンポーネントは、<retarget> ステップを使用して CLI が含まれている 1 つのホストに実行をリダイレクトします。さらに、<retarget> ステップのあとでシステム sessionID 変数が解決され、構成変数 config.allowSessionIDOnHosts は、Master Server ホストだけを指定するようになります。
ターゲット置換変数を使用すると、特定のホストから値を直接取得できます。
ターゲット置換変数参照の構文は、次のとおりです。
:[target:varname] :[target(host-redirect):varname] |
target から始まる変数名は、プランが現在実行されている論理ホストを表します。
varname は、属性値を表します。この属性値は、インストールするアプリケーション用のターゲットホストの定義で指定されています。参照できるホスト変数は、事前定義ホスト変数と動的ホスト変数の 2 種類です。「事前定義ホスト変数名」と「動的ホスト変数名」を参照してください。
host-redirect も指定した場合、varname の値は特定のホストから取得されます。そのホストは、現在プランを実行しているホストでなくてもかまいません。hostname に別の置換変数を指定することもできます。この場合は展開時に、ホスト名に解決されます。host-redirect の構文については、「ホストリダイレクト」を参照してください。
ホスト置換参照を使用できるところであれば、どこでも事前定義ホスト置換の短縮形を使用できます。
:[/] – 現在のターゲットホストのルート物理ホストに基づいて、オペレーティングシステム固有のファイル区切り文字に展開される
UNIX システム – :[/] は / に展開される
Microsoft Windows システム – :[/] は \ に展開される
:[:] – 現在のターゲットホストのルート物理ホストに基づいて、オペレーティングシステム固有のパス区切り文字に展開される
UNIX システム – :[:] は : に展開される
Microsoft Windows システム – :[:] は ; に展開される
ターゲットホスト置換変数の参照と外部コンポーネント置換変数の参照には、ホストリダイレクトを任意で組み込むことができます。この場合、変数またはコンポーネント検索が行われるホストは、現在のターゲットではなく、指定されたホストになります。host-redirect の形式は、次のいずれかです。
parent-ref
hostname
hostname/parent-ref
hostname は、ホスト名、または展開時にホスト名に解決される置換変数参照のどちらかです。
parent-ref は次のいずれか 1 つです。
/ – 指定されたホストのルート親ホストです。hostname を省略した場合は、現在のターゲットホストになります。
スラッシュで区切られた 1 つ以上の .. の連続 – 指定されたホストの n 番目の親、またはhostname を省略した場合は現在のターゲットホストの n 番目の親です。 n は .. の回数です。
parent-ref 演算子は主に、virtual hostsに使用しますが、物理ホストにも使用できます。物理ホストに両方の演算子を適用すると、無操作になります。
次に、ホスト myHost 上で変数 var1 を検索する例を示します。
:[target(myHost):var1] |
次に、置換変数 hostName で指定されたホスト上で変数 var1 を検索する例を示します。
:[target(:[hostName]):var1] |
次に、プランを現在実行している論理ホスト上で変数 var1 を検索する例を示します。
:[target:var1] |
事前定義ホスト変数名は、参照されるホストに関連付けられる属性を示します。
sys.hostName – ターゲットホスト名
sys.description – ターゲットホストの説明
sys.hostType – ターゲットホストのホストタイプ
sys.ipAddress – ターゲットホスト上の Remote Agent の IP アドレス
sys.portNumber – ターゲットホスト上の Remote Agent のポート番号
sys.raHomeDir – ターゲットホスト上の Remote Agent のホームディレクトリの絶対パス
sys.raDataDir – ターゲットホスト上の Remote Agent のデータディレクトリの絶対パス
sys.raTmpDir – ターゲットホスト上の Remote Agent の一時ディレクトリの絶対パス
sys.raConfigDir – ターゲットホスト上の Remote Agent の構成ディレクトリの絶対パス
次に、ホスト置換変数参照と対応する値の例を示します。
:[target:sys.ipAddress] – 現在のホストの IP アドレス
:[target:var1] – 現在のホストの動的変数 var1
:[target(host1):var1] – ホスト host1 の動的変数 var1
:[target(:[hostNameVar]):var1] – 名前が置換参照 hostNameVar の値であるホストの動的変数 var1
:[target(/):var1] – 現在のホストのルート親ホストの動的変数 var1
:[target(host1//):var1] – host1 というホストのルート親ホストの動的変数 var1
:[target(../..):var1] – 現在のホストの第 2 親ホストの動的変数 var1
:[target(host1/../..):var1] – host1 というホストの第 2 親ホストの動的変数 var1
動的ホスト変数名は、参照されたホストのhost typeによって宣言された、任意の属性名です。この場合、変数参照で置換される値は、参照されたホストで定義されている属性の対応する値です。該当する場合、値を展開してから置換する必要があります。
単純置換変数は、構成ファイルを含めてあらゆる入力ソースで使用できます。外部コンポーネント置換変数とターゲット置換変数は<installSteps>、<uninstallSteps>、 <controlService>、および <executionPlan> 要素の <varList>/<var> のデフォルト値をはじめ、さまざまな場所で使用できます。
:[varname] 形式の単純置換変数参照は、構成ファイルや構成可能コンポーネントの属性をはじめ、あらゆる入力ソースで使用できます。ただし、ホスト置換参照 (:[target:varname]) と外部コンポーネント置換参照 (:[component:compRef:varname]) を使用できるのは、変数設定値に限定されます。
変数設定値には、<var> のデフォルト属性値と、変数設定オーバーライドの値が含まれますが、構成ファイルまたはその他の構成可能コンポーネント属性は含まれません。この制限によって、コンポーネントとコンポーネントが参照する構成ファイル内のすべての変数が、コンポーネントの <varlist> 要素によって明示的に宣言されて検証されることが保証されます。
次に、特定の入力ソースで使用できる置換変数をすべて示します。記載する要素と属性は入力ソースであり、サブリストには使用できる変数の種類を示します。
<component>/<varList>/<var>/ default 属性:
変数設定値のオーバーライド値:
sys.rsrcInstallPath および sys.targetRefName 以外のコンポーネント置換参照
ホスト置換参照
基本コンポーネントとしての nested-component および dependee-component を除く外部コンポーネント置換参照
セッション変数参照:
<component>/<installList>/<installSteps>/<paramList>/<param>/ default 属性:
<component>/<uninstallList>/<uninstallSteps>/ <paramList>/<param>/default 属性:
<component>/<controlList>/<control>/<paramList>/<param>/default 属性:
<component>/<snapshotList>/<snapshot>/<paramList>/<param>/ default 属性:
コンポーネント置換参照
ホスト置換参照
外部コンポーネント置換参照
セッション変数参照
<component>/<installList>/<installSteps>/<varList>/<var>/ default 属性:
<component>/<uninstallList>/<uninstallSteps>/<varList>/<var>/ default 属性:
<component>/<controlList>/<control>/<varList>/<var>/default 属性:
<component>/<snapshotList>/<snapshot>/<varlList>/<var>/default 属性:
宣言済みのローカル変数置換参照
パラメータ置換参照
コンポーネント置換参照
ホスト置換参照
外部コンポーネント置換参照
セッション変数参照
<component>/<installList>/<installSteps>/子ステップ:
<component>/<uninstallList>/<uninstallSteps>/子ステップ:
<component>/<controlList>/<control>/子ステップ:
<component>/<snapshotList>/<snapshot>/<prepare>/子ステップ:
<component>/<snapshotList>/<snapshot>/<capture>/子ステップ:
<component>/<snapshotList>/<snapshot>/<cleanup>/子ステップ:
ローカル変数置換参照
パラメータ置換参照
コンポーネント置換参照
<component>/<resourceRef>/<installSpec>:
<component>/installPath 属性:
sys.rsrcInstallPath 以外のコンポーネント置換参照
<component>/<diff>/<ignore>:
<component>/<componentRef>/<argList>:
構成ファイル:
コンポーネント置換参照
<component>/<targetRef>:
<component>/<targetRef>/<agent>:
sys.targetRefName および sys.rsrcInstallPath を除くコンポーネント置換参照
<executionPlan>/<paramList>/<param>/ default 属性:
セッション変数参照
<executionPlan>/<varList>/<var>/ default 属性:
<executionPlan>/*/<inlineSubplan>/<varList>/<var>/ default 属性:
セッション変数参照
宣言済みのローカル変数置換参照
包含するプランの表示状態のローカル変数置換参照
表示状態のパラメータ置換参照
単純プランおよびサブプラン限定のホスト置換参照
単純プランおよびサブプラン限定の外部コンポーネント置換参照 (基本コンポーネントとしてのコンテナ、入れ子、上位レベル、および依存先は除く)
<executionPlan>/*/子ステップ:
ローカル変数置換参照
包含するプランの表示状態のローカル変数置換参照
表示状態のパラメータ置換参照
hostAttributes
セッション変数参照
次に示すコンポーネントの configuration 属性には、置換変数参照を含めることができます。
親要素 |
置換可能な属性 |
---|---|
<capture>/<addFile> |
displayName、path |
<component> |
installPath |
<diff>/<ignore> |
path |
<installSpec> |
name、path、permissions、user、group、deployMode、diffDeploy |
<paramList>/<param> |
default |
<targetRef> |
hostName |
<targetRef>/<agent> |
connection、ipAddr、port、params |
<varList>/<var> |
default |
次に示す、コンポーネントまたはプランに指定された step 属性には、置換変数参照を含めることができます。
親要素 |
置換可能な属性 |
---|---|
<argList> |
<argList> 要素の属性、形式は自由 |
<execJava> |
className、 classPath |
<execNative> |
dir、userToRunAs |
<execNative>/<ouputFile> |
name |
<execNative>/<errorFile> |
name |
<execNative>/<env> |
name、value |
<execNative>/<exec> |
cmd |
<execNative>/<exec>/<arg> |
value |
<execNative>/<shell> |
cmd、<body> |
<execNative>/<successCriteria> |
outputMatches、 errorMatches |
<execNative>/<inputFile> |
name |
<execNative>/<inputText> |
<body> |
<if>/<condition>/<equals> <if>/<condition>/<istrue> <if>/<condition>/<matches> |
value1、value2 value value、pattern |
<processTest> |
processNamePattern、 user |
<raise> <retarget> <retarget>/<varList>/<var> |
message host default |
<sendCustomEvent> |
message |
<transform> |
input、output |
<transform>/<source> |
name |
<transform>/<stylesheet> |
<body> |
<transform>/<subst> |
match、replace |
<urlTest> |
url、pattern |
次のプラン属性には、置換変数参照を含めることができます。
親要素 |
置換可能な属性 |
---|---|
<paramList>/<param> |
default |
<varList>/<var> |
default |
インストール型コンポーネントターゲッタの次の属性には、置換変数参照を含めることができます。
親要素 |
置換可能な属性 |
---|---|
<installedComponent> |
installPath、host |
<systemType> |
installPath、host |
<targetableComponent> |
host |
<toplevelRef> |
installPath、host |
リポジトリコンポーネントターゲッタの次の属性には、置換変数参照を含めることができます。
親要素 |
置換可能な属性 |
---|---|
<component> <toplevelRef> |
host host |
次に、Apache Web サーバー用のコンポーネントで定義されている変数の例を示します。
<varList> <var name="domainname" default=":[target:domainname]"/> <var name="name" default="apache"/> <var name="installPath" default="/opt/apache"/> <var name="execNativeShutdown" default=":[installPath]/bin/apachectlstop"/> <var name="execNativeStartUp" default=":[installPath]/bin/apachectlstart"/> </varList> |
このコンポーネントの指定内容は、次のとおりです。
ドメイン名はターゲットホストから動的に取得する必要があります。
name のデフォルト値は apache です。
installPath を呼び出した変数には、 /opt/apache という値が設定されています。
installPath の値は、2 つの <execNative> 変数の定義で使用されています。
構成ファイルでターゲット置換変数を使用することはできませんが、構成ファイルからホスト固有の値を参照できます。これが可能なのは、参照する変数の値がホスト固有値として計算可能だからです。たとえば、コンポーネントの <varList> セクションに、次の変数を定義しておくことができます。
<var name="box" value=":[target:room]"> |
この場合、構成ファイルから :[box] を参照できます。:[box] を置換するときには、ターゲットホストによって定義された room 変数の値に置き換えられます。