入力ソースには、任意の数の単純置換変数参照を含めることができます。単純置換変数の構文は、次のとおりです。
:[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 が未宣言 |