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

第 6 章 構成の生成

N1 Grid Service Provisioning System ソフトウェアでは、substitution variablesおよびvariable settingsを使用することによって、あらゆるコンポーネントの配備をカスタマイズできます。

この章の内容は次のとおりです。

構成の生成の概要

アプリケーションをコンポーネントとしてモデル化し、さまざまな環境で動作するようにカスタマイズできます。

たとえば、データベースアプリケーションを使用してオンラインカタログ販売を管理するとします。運用環境にアプリケーションを配備する前に、テスト環境でアプリケーションをテストします。この 2 つの環境で同じアプリケーションを実行しますが、構成は異なります。テスト環境にアプリケーションを配備する場合は、テスト用のデータベースを使用します。運用環境にアプリケーションを配備する場合は、運用版のデータベースを使用します。

使用するデータベースなど、アプリケーションに関する構成情報は、構成ファイルに格納できます。各環境をサポートするには、これらの構成ファイルをカスタマイズする必要があります。構成ファイルには、コンポーネントの配備時に変数設定値に置き換えられる置換変数を含めることができます。

置換変数は構成ファイルで使用できるだけではなく、プランとコンポーネントでも使用できます。たとえば、アプリケーションをインストールするディレクトリを置換変数で指定できます。プロビジョニングシステムでは、配備環境ごとに個別の変数設定を定義して管理できます。

構成ファイル、プラン、またはコンポーネント中の置換変数参照により、次の種類の値を取得できます。

プロビジョニングシステムでは、configuration generation engineを使用して、置換変数参照を適切な変数設定値に置き換えます。このエンジンは、ホストリポジトリおよびコンポーネントリポジトリと対話し、プランを実行するたびに値を解決してコンポーネントを配備します。

プロビジョニングシステムには変数設定を格納しておくためのリポジトリがあるので、あとで値を再利用できます。コンポーネントのインストールとプランの実行に使用された変数設定を表示すると、変数の状態を調べられます。インストール済みコンポーネントとの比較実行時に置換変数の状態を調べる場合にも、このリポジトリを使用します。

コンポーネントへの置換変数の追加

複数のホストに同じアプリケーションを配備するプランを実行する場合は、構成の生成を使用することによって、置換変数を各ホストに適した値に自動的に置き換えることができます。

その場合、コンポーネントに置換変数定義を追加します。置換変数定義はたとえば、アプリケーションのインストール先ディレクトリを設定する 1 つの手段として使用できます。プロビジョニングシステムを使用することにより、次のように、各ターゲットホスト上で、アプリケーション配備に関してそれぞれ異なる変数設定を定義して管理できます。

置換変数の値

アプリケーションのインストール時にプロビジョニングシステムが置換する値は、次のいずれかになります。

生成コンテキスト

変数が置換されるのは、ターゲットホスト上でターゲットステップが実行されたときです。ステップはターゲットホストにインストールする、またはインストール済みのプランまたはホストに組み込めます。ターゲットホストとコンポーネントに関連付けられた状態がある場合は、その状態に基づいて個々の置換変数値が決定されます。状態に含まれる可能性がある情報は、次のとおりです。

入力ソース

変数置換エンジンは、String 形式または Reader 形式であれば、あらゆるテキストベースの入力ソースを処理します。ただし、実際には入力ソースとして使用されるのは、次のエンティティだけです。

置換に使用できる変数の種類

コンポーネント、プラン、変数設定、および構成可能なリソース内で、次の種類の変数を参照できます。

単純置換変数参照

入力ソースには、任意の数の単純置換変数参照を含めることができます。単純置換変数の構文は、次のとおりです。


:[variable]

variable は次のいずれかです。

事前定義されたコンポーネント変数名

事前定義されたコンポーネント変数名は、次のように、生成コンテキストの関連するコンポーネント属性を参照します。

事前定義されたコンポーネント変数は、変数参照がベースコンポーネントで行われる場合でも、常に、インストールされている実際の コンポーネントに関連付けられて解決されます。事前定義されたコンポーネント変数は、PUBLIC 変数として扱われます。

置換変数のエスケープシーケンス

入力ソースに :[ を含める場合は、 :[[ を使用してエスケープする必要があります。:[[ を検出するたびに、構成生成機能が :[ に置き換えます。

たとえば、プロビジョニングシステムに box の値を置換させるのではなく、:[box] を字句どおりに含める場合は、:[[box] を使用します。

入力ソースが XML で作成されたコンポーネントの属性である場合、値は XML ベースのエスケープシーケンスに関する次の規則が適用されます。

これらのエスケープ規則は、プロビジョニングシステムのブラウザインタフェース、構成リソースファイル、または構成生成 CLI コマンドの入力によるオーバーライド値には当てはまりません。

置換変数の展開

置換変数参照が変数設定値によって置き換えられるときには、値がそのつど展開されてから置換されます。この展開が必要なのは、値そのものに単純置換変数の参照が含まれている場合があるからです。値の置換を禁止するには、入力ソースを :[[ でエスケープします。

デフォルト置換値またはオーバーライド置換値、パラメータのデフォルト値、およびローカル変数のデフォルト値で使用できるのは、ホストおよび外部コンポーネント置換参照だけです。このような参照は、その他の入力ソースでは認められません。

単純置換変数参照の展開

変数設定値における単純置換変数参照の構文は、入力ソースの場合と同じです。


:[varname]

この場合、参照する変数名が、参照が含まれる変数より先に宣言されていなければなりません。この制約によって、参照の循環が防止されます。

派生コンポーネントの場合、ベースコンポーネントから継承した値が、親での宣言順に従って先に展開されます。その後、ローカルの非オーバーライド変数が宣言された順に展開されます。継承した値を無効にするローカル変数は、継承値の展開順序と同じ順で継承値の代わりに展開されます。したがって、オーバーライド変数が参照できるのは、すでに宣言されているほかの継承変数またはオーバーライド変数だけです。たとえば、ベースコンポーネント A が xy という変数を宣言するとします。さらに、派生コンポーネント B が変数 zy を宣言します。コンポーネント B で変数が評価される順番は、コンポーネント A から継承した x、続いてコンポーネント B によってオーバーライドされた y、最後にコンポーネント B のローカル変数である z です。


例 6–1 単純置換変数の使用方法

次の表に、置換変数、対応する展開後の値、未展開の値の例を示します。

変数名 

未展開の値 

展開後の値 

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 は次のいずれか 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 外部コンポーネント置換変数参照の使用


セッション置換変数の参照

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 の構文については、「ホストリダイレクト」を参照してください。

事前定義ホスト置換の短縮形

ホスト置換参照を使用できるところであれば、どこでも事前定義ホスト置換の短縮形を使用できます。

ホストリダイレクト

ターゲットホスト置換変数の参照と外部コンポーネント置換変数の参照には、ホストリダイレクトを任意で組み込むことができます。この場合、変数またはコンポーネント検索が行われるホストは、現在のターゲットではなく、指定されたホストになります。host-redirect の形式は、次のいずれかです。

hostname は、ホスト名、または展開時にホスト名に解決される置換変数参照のどちらかです。

parent-ref は次のいずれか 1 つです。

parent-ref 演算子は主に、virtual hostsに使用しますが、物理ホストにも使用できます。物理ホストに両方の演算子を適用すると、無操作になります。


例 6–3 ターゲット置換変数参照の使用


事前定義ホスト変数名

事前定義ホスト変数名は、参照されるホストに関連付けられる属性を示します。


例 6–4 ホスト置換変数参照の使用

次に、ホスト置換変数参照と対応する値の例を示します。


動的ホスト変数名

動的ホスト変数名は、参照されたホストのhost typeによって宣言された、任意の属性名です。この場合、変数参照で置換される値は、参照されたホストで定義されている属性の対応する値です。該当する場合、値を展開してから置換する必要があります。

置換変数の使用

単純置換変数は、構成ファイルを含めてあらゆる入力ソースで使用できます。外部コンポーネント置換変数とターゲット置換変数は<installSteps><uninstallSteps><controlService>、および <executionPlan> 要素の <varList>/<var> のデフォルト値をはじめ、さまざまな場所で使用できます。

:[varname] 形式の単純置換変数参照は、構成ファイルや構成可能コンポーネントの属性をはじめ、あらゆる入力ソースで使用できます。ただし、ホスト置換参照 (:[target:varname]) と外部コンポーネント置換参照 (:[component:compRef:varname]) を使用できるのは、変数設定値に限定されます。

変数設定値には、<var> のデフォルト属性値と、変数設定オーバーライドの値が含まれますが、構成ファイルまたはその他の構成可能コンポーネント属性は含まれません。この制限によって、コンポーネントとコンポーネントが参照する構成ファイル内のすべての変数が、コンポーネントの <varlist> 要素によって明示的に宣言されて検証されることが保証されます。

次に、特定の入力ソースで使用できる置換変数をすべて示します。記載する要素と属性は入力ソースであり、サブリストには使用できる変数の種類を示します。

次に示すコンポーネントの configuration 属性には、置換変数参照を含めることができます。

親要素 

置換可能な属性 

<capture>/<addFile>

displayNamepath

<component>

installPath

<diff>/<ignore>

path

<installSpec>

namepathpermissionsusergroupdeployModediffDeploy

<paramList>/<param>

default

<targetRef>

hostName

<targetRef>/<agent>

connectionipAddrportparams

<varList>/<var>

default

次に示す、コンポーネントまたはプランに指定された step 属性には、置換変数参照を含めることができます。

親要素 

置換可能な属性 

<argList>

<argList> 要素の属性、形式は自由

<execJava>

classNameclassPath

<execNative>

diruserToRunAs

<execNative>/<ouputFile>

name

<execNative>/<errorFile>

name

<execNative>/<env>

namevalue

<execNative>/<exec>

cmd

<execNative>/<exec>/<arg>

value

<execNative>/<shell>

cmd<body>

<execNative>/<successCriteria>

outputMatcheserrorMatches

<execNative>/<inputFile>

name

<execNative>/<inputText>

<body>

<if>/<condition>/<equals>

<if>/<condition>/<istrue>

<if>/<condition>/<matches>

value1value2

value

valuepattern

<processTest>

processNamePatternuser

<raise>

<retarget>

<retarget>/<varList>/<var>

message

host

default

<sendCustomEvent>

message

<transform>

inputoutput

<transform>/<source>

name

<transform>/<stylesheet>

<body>

<transform>/<subst>

matchreplace

<urlTest>

urlpattern

次のプラン属性には、置換変数参照を含めることができます。

親要素 

置換可能な属性 

<paramList>/<param>

default

<varList>/<var>

default

インストール型コンポーネントターゲッタの次の属性には、置換変数参照を含めることができます。

親要素 

置換可能な属性 

<installedComponent>

installPathhost

<systemType>

installPathhost

<targetableComponent>

host

<toplevelRef>

installPathhost

リポジトリコンポーネントターゲッタの次の属性には、置換変数参照を含めることができます。

親要素 

置換可能な属性 

<component>

<toplevelRef>

host

host


例 6–5 置換変数の使用方法

次に、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>

このコンポーネントの指定内容は、次のとおりです。

構成ファイルでターゲット置換変数を使用することはできませんが、構成ファイルからホスト固有の値を参照できます。これが可能なのは、参照する変数の値がホスト固有値として計算可能だからです。たとえば、コンポーネントの <varList> セクションに、次の変数を定義しておくことができます。


<var name="box" value=":[target:room]">

この場合、構成ファイルから :[box] を参照できます。:[box] を置換するときには、ターゲットホストによって定義された room 変数の値に置き換えられます。