N1 Service Provisioning System 4.1 リファレンスガイド

第 16 章 構成の生成

多くのアプリケーションは、インストールされ実行されるホストにかかわらず、ホスト固有の情報を含むおそらく 1 つの構成ファイルを除いて、ほぼ同じです。 これらの構成ファイルには通常、インストール先のホストに固有の値や、ホストやホストセットごとにカスタマイズされた値が含まれています。 たとえば、QA/テスト、ステージング/バーンイン、実稼動などの異なる配備環境が存在する場合があります。 これらの各環境で使用される構成値は異なると考えられます。 N1 Service Provisioning System software は、各配備環境で使用する変数値を含む複数の変数設定オブジェクトの定義を実現することで、これらの各環境の配備をより簡単なものにします。

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

N1 Service Provisioning System software で複数のホストにアプリケーションを配備するプランを実行する場合は、構成生成機能によって、各ホストに適した構成値を自動的に挿入できます。 プロビジョニングソフトウェア は、ユーザーが作成した構成ファイルのテンプレートを構文解析することで、自動挿入を実現します。

自動挿入を行うには、置換変数定義をコンポーネントに追加します。 これらはたとえば、アプリケーションをインストールするディレクトリを構成する手段として利用できます。 また プロビジョニングソフトウェア を使用すると、各対象ホストへアプリケーションを配備するための複数の変数設定を定義、管理することができます。

変数に置換する値

プロビジョニングソフトウェア がアプリケーションのインストール時に置き換える値は、以下のどれかです。

生成のコンテキスト

変数は、対象ホスト上で対象手順が実行されたときに、置換されます。 手順は、プラン内、対象ホストにインストール中のコンポーネント内、 または対象ホストにインストール済みのコンポーネント内に含まれる場合があります。 対象ホストとコンポーネントの状態は、特定の置換変数の値を決めるために使用されます。以下に例をあげます。

置換できる変数の種類

コンポーネントの作成時または編集時には、事前定義した変数定義を使用したり、ユーザーのニーズに合ったカスタム定義を作成したりすることができます。

変数の置換は、以下の構文で定義します。


:[variable]

ここで、variable はホスト固有の値と置換するパラメタです。

コンポーネント内で定義できる変数は、基本的に 4 種類あります。

単純置換変数

単純置換は、後で同じコンポーネント内で参照する変数を定義するために使用します。

単純置換変数は、以下の構文を使用します。


:[variable] 

ここで、variable は以下のうちの 1 つです。

外部置換変数

変数設定値には、数の制限なしに外部コンポーネント置換参照を含めることができます。 外部コンポーネント置換参照は、以下のどちらかです。


:[primary-component:varname]
:[primary-component:secondary-component-list:varname]

注 –

外部コンポーネント置換参照には、空白は含まれません。


上の primary-component は、以下のどちらかです。


	explicit-external-component
	secondary-component

また secondary-component は、以下のどれかです。


	nested-component
	toplevel-component
	dependee-component

secondary-component-list は、コロンで区切られた 1 つ以上の secondary-component のシーケンスです。

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

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

explicit-external-component は、特定の場所の特定のホストにインストールする予定のコンポーネントを明示的に指定し、第 2 章「インストール済みコンポーネント」で説明されている <installedComponent> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 構文は以下のとおりです。


	component-target:explicit-component-reference

上の component-target は目標コンポーネントをインストールするホストを指定し、以下のどちらかになります。


component
component(host-redirect)

最初の派生関数は、生成コンテキスト内の現在の対象ホストを指定します。 2 番目の派生関数は、ホストの切り替えの説明どおり、host-redirect によって指定された ROX ホスト を指します。

上の 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 を含むプランまたはコンポーネントに相対して展開されます。 パスは、目標コンポーネントのインストールパスを表す絶対パス名、または展開時に目標コンポーネントの絶対インストールパスを表す置換変数参照です。 絶対パス名に「}」が含まれる場合は、「}}」としてエスケープしなければなりません。

入れ子コンポーネントの展開

nested-component は、現在のコンポーネントによって宣言された入れ子コンポーネント参照によって参照されるコンポーネントを指定し、第 2 章「インストール済みコンポーネントターゲッター」で説明されている <nestedRef> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 構文は以下のとおりです。


	nestedRef:component-reference-name

上の component-reference-name は、現在のコンポーネント内の「NESTED」 installMode を持つ <componentRef> 要素の名前です。

nested-component を使用できるのは、現在のコンポーネントが複合コンポーネントの場合だけです。また、複合コンポーネント内に外部コンポーネント置換参照がある場合は、primary-component としてのみ使用できます。 変数の評価時には参照コンポーネントがインストールされていないので、primary-component として使用する場合は、コンポーネント変数のデフォルト値または優先変数設定として使用することはできません。

最上位コンポーネントの展開

toplevel-component は、現在のコンポーネントによって宣言された最上位コンポーネント参照によって参照するコンポーネントを指定し、第 2 章の「インストール済みコンポーネントターゲッター」で説明されている <toplevelRef> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 書式は以下のどれかです。


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 は、現在のコンポーネント内の "TOPLEVEL" installMode を持つ <componentRef> 要素の名前です。

上の path と host-redirect は、それぞれ参照コンポーネントがインストールされる予定の場所とホストです。 host-redirect の構文は、「ホストの切り替え」の項で説明されています。

toplevel-component を使用できるのは、現在のコンポーネントが複合コンポーネントの場合だけです。また、複合コンポーネント内に外部コンポーネント置換参照がある場合は、primary-component としてのみ使用できます。 primary-component として使用される場合は、参照コンポーネントがすでにインストール済みでないかぎり、コンポーネント変数のデフォルト値または優先変数設定として使用することはできません。

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

dependee-component は、<createDependency> 手順によって作られた依存関係の結果、現在のコンポーネントが依存しているコンポーネントを指定し、第 2 章「インストール済みコンポーネントターゲッター」で説明されている <dependee> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 構文は以下のとおりです。


	dependee:dependency-name

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

外部コンポーネント置換参照がコンポーネント内にある場合、dependee-component は primary-component としてしか使用できません。 変数の評価時に依存関係が確立していないので、primary-component として使用する場合は、コンポーネント変数のデフォルト値または優先変数設定として使用することはできません。

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

system-service-component は、現在の対象の物理的なルートホストにインストールされる予定のシステムサービスコンポーネントを指定し、第 2 章「インストール済みコンポーネントターゲッター」で説明されている <systemService> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 構文は以下のとおりです。

systemService:system-service-name

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

system-type-component は、特定の場所の特定のホストに一番最近インストールされたあるコンポーネント型から派生したコンポーネントを指定し、第 2 章の「インストール済みコンポーネントターゲッター」で説明されている <systemType> インストール済みコンポーネントターゲッターのコンポーネント解釈処理意味論を持っています。 書式は以下のとおりです。

systemType:component-type-name

systemType:component-type-name@{path}

systemType(host-redirect):component-type-name

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

ここでは path はオプションです。指定された場合は、目標コンポーネントをインストールするパスを示します。 host-redirect もオプションです。これは、ホストの切り替えの説明どおり目標コンポーネントがインストールされるホストを示します。

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

container-component は、入れ子参照として現在のコンポーネントを含むコンポーネントを指定します。 構文は以下のとおりです。


	container

外部コンポーネント置換参照が、他の「コンテナ」コンポーネントによって入れ子コンポーネントとしてインストールされたコンポーネント内にある場合、container-component は primary-component としてしか使用できません。

外部コンポーネント置換参照の解釈処理

外部コンポーネント置換参照の値は、まず primary-component が参照するコンポーネントを解釈処理することによって計算されます。 secondary-component が primary-component として使用された場合、外部コンポーネント置換参照を含む現コンポーネントは、primary-component の解釈時に使用される初期現コンポーネントとして機能します。 primary-component によって解釈処理されたコンポーネントは、新しい現コンポーネントになります。 次に、secondary-component-list 内の secondary-component が、最後に解釈処理されたコンポーネントを現コンポーネントとして使用して、解釈処理されます。 その後、最後に解釈処理されたコンポーネント内の varname という変数が検索され、返されます。

外部コンポーネント置換参照の値は、インストール時点の参照コンポーネント内の指定された変数の値をもとに計算されます。 インストール済みコンポーネントによって宣言されたのではない変数名や、対象ホストにインストールされていないコンポーネントを参照してはなりません。 また、外部コンポーネント置換参照を宣言するコンポーネントやプランからアクセスできない変数も参照しないでください。 変数にアクセスできるのは、変数がアクセス可能アクセスモードで宣言され、コンポーネントを宣言するコンポーネントにアクセスでき、そのコンポーネントに到達するために通るプライマリコンポーネントとセカンダリコンポーネントそれぞれにアクセスできる場合だけです。


注 –

外部コンポーネント置換参照は、プラン実行中に出現したときに計算されます (プラン実行の開始時ではありません)。 したがって、参照される実際のインストール済みコンポーネントは、プラン内で以前実行された手順をもとに変更されている場合があります。 さらに、現在の対象ホスト以外のホストにインストールされたコンポーネントへの参照は、他のホストで同時に実行されている他のプランから影響を受ける場合があります。 予想可能な結果を得るためには、クライアントは、現在のプラン実行の対象セット内に含まれる参照ホストだけを参照し (それらがロックされていることを保証して)、目標再設定または一括実行モードもしくはその両方を使用してプラン内の外部から参照されているホスト上のインストール/アンインストール操作をすべて同期する必要があります。


以下に、明示的な外部コンポーネントを使用した外部コンポーネント置換参照の例をいくつか挙げます。


:[component:installApache:label]
:[component:jdk#1.3:classpath]
:[component:webApp#2.4@{/usr/local}:bannerColor]
:[component(/):IIS global settings:install_path]
:[component:webApp@{:[webAppPath]}:bannerColor]

2 番目以降の例では、現在の対象ホストの物理的なルートホストにインストールされたコンポーネントが解釈処理されます。

最後の行では、webAppPath が、外部から参照されているコンポーネント内で定義された変数としてではなく、生成コンテキストの関連コンポーネント内の単純置換変数セットの名前として解釈処理されます。

以下に、入れ子コンポーネントまたは最上位コンポーネントを使用した外部コンポーネント置換参照の例をいくつか挙げます。


:[nestedRef:ref1:label]
:[toplevelRef:ref2:name]
:[toplevelRef(/):ref3@{/usr/local}:var1]

次に、依存先コンポーネントを使用した外部コンポーネント置換参照の例を挙げます。


:[dependee:app2domain:domainName]

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

セッション変数を使用すると、ログインセッション中に 1 回、WebLogic 資格などのデータを入力できます。 また、ユーザーは、ログインごとに再入力しなくてすむように、これらの変数の内容をセキュアに保存できます。 セッション変数は、置換変数を使用してモデル化レベルで統合されます。 セッション変数の構文は、以下のとおりです。


session:varname

上の varname は、セッション変数の名前です。


注 –

session:varname という書式のセッション変数参照は、現在のユーザーのセッション内のセッション変数の値に解釈処理されます。 現在のユーザーのセッションに定義されていないセッション変数を解釈処理しようとすると、セッション変数が定義されていないことを示すエラーが発生します。 セッション変数を生成できなかった場合は、ユーザーの現在のセッションの変数セットに空の値を持つセッション変数を追加しようとする試みが行われます。


セッション変数は、単純置換変数参照が使用できるところであればどこでも使用できます。 ただし、他のセッション変数の値の中では使用できません。

対象置換変数

対象置換変数を使用すると、特定のホストから値を直接取得できます。

対象置換変数の構文は、以下のとおりです。


:[target:varname]
:[target(hostname):varname]

target で始まる変数名は、現在プランが実行されている論理ホストを指します。

コロンの後に追加する varname パラメタは、対象ホストの定義でインストール中のアプリケーションのために指定された属性値を表します。

target の直後に (hostname) を指定した場合、varname の値は特定のホストから検出されます。このホストは現在プランが実行されているホストとは別のホストでもかまいません。 また、展開時にホストの名前に解釈処理される hostname の置換変数を指定することもできます。

ホストの切り替え

ホスト置換参照と外部コンポーネント置換参照には、ホストの切り替えをオプションで含めることができます。ホストの切り替えでは、変数やコンポーネントが検索されるホストが、現在の対象から指定ホストに切り替えられます。 ホストの切り替えの書式は、以下のどれかです。

parent-ref hostname hostname/parent-ref

ここで hostname は、ROX ホストの名前か、展開時に ROX ホストの名前に解釈処理される置換変数参照です。

parent-ref は、指定されたホスト (hostname が省略された場合は現在の対象ホスト) のルート親ホストを意味する「/」、または指定されたホスト (hostname が省略された場合は現在の対象ホスト) の n 番目の親を意味する 1 つ以上のスラッシュで区切られた「..」となります。「n」は、表示された「..」の数です。 parent-ref 演算子は、主に仮想ホストで使用されるためのものですが、物理ホストでも使用できます。 物理ホストにどちらかの演算子を適用すると、ノーオペレーション (空命令) となります。

以下に、対象置換変数の使用例をいくつか挙げます。

この例では、ホスト myHost 上で変数 var1 を検索します。


:[target(myHost):var1] 

この例では、置換変数 hostName で指定されるホスト上で変数 var1 を検索します。


:[target(:[hostName]):var1]

この例では、プランを実行中の論理ホスト上で変数 var1 を検索します。


:[target:var1]

対象ホストに対して事前定義される変数は、以下のとおりです。

以下に、apache のコンポーネントで定義された変数の一覧の例を示します。


<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」を定義した後、2 つの execNative 変数の定義で使用する変数 installPath の値を指定します。

構成ファイル内で対象置換変数を使用することはできませんが、構成ファイル内からホスト固有の値を参照することは可能です。 これは、参照する変数の値がホスト固有の値として計算される場合があるからです。 たとえば、コンポーネントの <varList> セクション内に以下の変数を定義したとします。


<var name="pants" value=":[target:pie]">

ここで構成ファイル内から :[pants] を参照します。 :[pants] は、対象ホストによって定義された pie 変数の値と置き換えられます。

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

:[/] と :[/] という短縮形は、ホスト置換参照を使用できるところではどこでも使用できます。

:[/] という短縮形は、現在の対象ホストの物理的なルートホストのオペレーティングシステム固有のファイル区切り文字に展開されます。 たとえば、UNIX ベースのオペレーティングシステムでは「/」に展開され、Windows では「\」に展開されます。

:[:] という短縮形は、現在の対象ホストの物理的なルートホストのオペレーティングシステム固有のパス区切り文字に展開されます。 たとえば、UNIX ベースのオペレーティングシステムでは「:」に展開され、Windows では「;」に展開されます。

置換変数の使用

単純置換変数は、構成ファイルを含むすべての入力ソースで使用できます。 また外部コンポーネント置換変数と対象置換変数は、installSteps、uninstallSteps、controlService、executionPlans の varList/var のデフォルト値など多くの場合に使用できます。

以下に、どの入力ソースでどの種類の置換変数を使用できるかを列挙した完全な一覧を示します。

入力ソース 

使用可能な変数の種類 

<component>/<varList>/<var>/default attribute 

variable settings override value 

  • コンポーネント置換参照

  • ホスト置換参照

  • 外部コンポーネント置換参照(プライマリコンポーネントとしての入れ子および依存先も含む)

  • セッション変数参照

入力ソース 

使用可能な変数の種類 

<component>/<installList>/<installSteps>/ <paramList>/<param>/default attribute 

<component>/<uninstallList>/<uninstallSteps>/<paramList>/<param> \ 

/default attribute 

<component>/<controlList>/<control>/ <paramList>/<param>/default attribute 

<component>/<snapshotList>/<snapshot>/ <paramList>/<param>/default attribute 

  • コンポーネント置換参照

  • ホスト置換参照

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

  • セッション変数参照

入力ソース 

使用可能な変数の種類 

<component>/<installList>/<installSteps>/ <varList>/<var>/default attribute 

<component>/<uninstallList>/<uninstallSteps>/ < varList>/<var>/default attribute 

<component>/<controlList>/<control>/ < varList>/<var>/default attribute 

<component>/<snapshotList>/<snapshot>/<varlList>/<var>/default attribute 

  • (以前宣言された) 局所変数置換参照

  • パラメタ置換参照

  • コンポーネント置換参照

  • ホスト置換参照

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

  • セッション変数参照

入力ソース 

使用可能な変数の種類 

<component>/<installList>/<installSteps>/child steps 

<component>/<uninstallList>/<uninstallSteps>/child steps 

<component>/<controlList>/<control>/child steps 

<component/<snapshotList>/<snapshot>/<prepare>/child steps 

<component/<snapshotList>/<snapshot>/<capture>/child steps 

<component/<snapshotList>/<snapshot>/<cleanup>/child steps 

  • 局所変数置換参照

  • パラメタ置換参照

  • コンポーネント置換参照

入力ソース 

使用可能な変数の種類 

<component>/<resourceRef>/<resource> 

<component>/installPath 

  • コンポーネント置換参照 (rsrcInstallPath を除く)

入力ソース 

使用可能な変数の種類 

<component>/<diff>/<ignore> 

構成ファイル 

コンポーネント置換参照  

入力ソース 

使用可能な変数の種類 

<executionPlan>/<paramList>/<param>/default attribute 

セッション変数参照 

入力ソース 

使用可能な変数の種類 

<executionPlan>/<varList>/<var>/default attribute 

<executionPlan>/*/<inlineSubplan>/<varList>/<var>/default attribute 

  • セッション変数参照

  • (以前宣言された) 局所変数置換参照

  • 包含するプランの非表示ではない局所変数置換参照

  • 非表示ではないパラメタ置換参照

  • ホスト置換参照 (単純プランとサブプランのみ)

  • 外部コンポーネント置換参照 (単純プランとサブプランのみ。プライマリコンポーネントとしてのコンテナ、入れ子、最上位、依存先は除く)

入力ソース 

使用可能な変数の種類 

<executionPlan>/*/child steps 

  • 局所変数置換参照

  • 包含するプランの非表示ではない局所変数置換参照

  • 非表示ではないパラメタ置換参照

入力ソース 

使用可能な変数の種類 

hostAttributes 

セッション変数参照 

以下のコンポーネント構成属性は、その属性の右にある置換変数の定義を含むことができます。

親要素 

置換可能な属性 

capture/addFile 

component 

installSpec 

displayName 

installPath 

name 

installSpec 

path 

installSpec 

permissions 

installSpec 

user 

installSpec 

installSpec 

installSpec 

group 

deployMode 

diffDeploy 

diff/ignore 

path  

varList/var 

default 

paramList/param 

default 

capture/addFile 

path 

以下のコンポーネントまたはプラン内の手順の構成属性は、その属性の右にある置換変数の定義を含むことができます。

親要素 

置換可能な属性 

argList/arg 

value 

execJavaexecJavaexecNative 

classNameclassPathdir 

execNative/ouputFile 

name 

execNative/errorFile 

name 

execNative/env 

name 

execNative/env 

value 

execNative/exec 

cmd 

execNative/exec/arg 

value 

execNative/shell 

cmd 

execNative/shell 

<body> 

execNative/successCriteria 

outputMatches 

execNative/successCriteria 

errorMatches 

execNative/inputText 

<body> 

execNative/inputFile 

name 

execNative 

if/condition/istrue 

if/condition/equals 

if/condition/equals 

if/condition/matches 

if/condition/matches 

userToRunAs 

value 

value1 

value2 

value 

pattern 

processTest 

processNamePattern 

processTest 

raise 

retarget 

retarget/varList/var 

user 

message 

host 

default 

sendCustomEvent 

message 

transform 

input 

transform 

output 

transform/stylesheet 

<body> 

transform/subst 

match 

transform/subst 

replace 

transform/source 

name 

uninstallComponent 

installPath 

urlTest 

url 

urlTest 

pattern 

以下のプラン構成属性は、その属性の右にある置換変数の定義を含むことができます。

親要素 

置換可能な属性 

varList/var 

default 

以下のインストール済みコンポーネントターゲッター構成属性は、その属性の右にある置換変数の定義を含むことができます。

親要素 

置換可能な属性 

installedComponent 

installedComponent 

systemType 

systemType 

toplevelRef 

toplevelRef 

installPath 

host 

installPath 

host 

installPath 

host 

以下のリポジトリコンポーネントターゲッター構成属性は、その属性の右にある置換変数の定義を含むことができます。

親要素 

置換可能な属性 

component 

toplevelRef 

host 

host 

置換変数定義のあるファイル内のエスケープシーケンス

置換変数 (:]) に定義されたシーケンスと同じシーケンスをなんらかの理由で構成ファイルに記述する場合は、シーケンスの後ろに [ をもう 1 つ記述することでシーケンスをエスケープできます。 たとえば、:[pants] というテキストを構成ファイルに記述し、N1 Service Provisioning System software が pants を他の値に置き換えないようにするためには、:[[pants] と記述します。

構成ジェネレータは、ファイル内のすべての :[[ を :[ に置き換えます。


注 –

置き換えたい変数の入力ソースが XML で記述されたコンポーネントの属性の場合は、以下のような XML ベースのエスケープシーケンスの一般的な規則を使用します。

文字 

エスケープシーケンス 

&quot; 

&apos; 

&lt; 

 

&gt; 

&amp; 


コンポーネントおよび構成ファイルの事前定義された置換変数

N1 Service Provisioning System software は、コンポーネントおよび構成ファイルで使用するための事前定義された置換変数を提供します。