適用対象: Windows PowerShell 4.0、Windows PowerShell 5.0
組み込みの DSC ConfigurationData パラメーターを使用して、構成内で使用できるデータを定義できます。 これにより、複数のノードまたは異なる環境に使用できる単一の構成を作成できます。 たとえば、アプリケーションを開発する場合、開発環境と実稼働環境の両方に 1 つの構成を使用し、構成データを使用して各環境のデータを指定することができます。
このトピックでは、 ConfigurationData ハッシュテーブルの構造について説明します。 構成データの使用方法の例については、 構成データと環境データの分離を参照してください。
ConfigurationData 共通パラメーター
DSC 構成は、構成のコンパイル時に指定する共通パラメーター ConfigurationData を受け取ります。 構成のコンパイルの詳細については、「 DSC 構成」を参照してください。
ConfigurationData パラメーターは、AllNodes という名前のキーを少なくとも 1 つ持つ必要があるハッシュテーブルです。 また、1 つ以上の他のキーを持つこともできます。
注
このトピックの例では、NonNodeData という名前の 1 つの追加キー (名前付き AllNodes キー以外) を使用しますが、任意の数の追加キーを含めて、任意の名前を付けることができます。
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
AllNodes キーの値は配列です。 この配列の各要素は、 NodeName という名前のキーを少なくとも 1 つ持つ必要があるハッシュ テーブルでもあります。
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
各ハッシュテーブルに他のキーを追加することもできます。
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
すべてのノードにプロパティを適用するには、NodeName が * の AllNodes 配列のメンバーを作成します。 たとえば、すべてのノードに LogPath プロパティを与えるには、次のようにします。
$MyData =
@{
AllNodes =
@(
@{
NodeName = "*"
LogPath = "C:\Logs"
},
@{
NodeName = "VM-1"
Role = "WebServer"
SiteContents = "C:\Site1"
SiteName = "Website1"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
SiteContents = "C:\Site2"
SiteName = "Website3"
}
);
}
これは、名前が LogPath で値が "C:\Logs" のプロパティを他の各ブロック (VM-1、 VM-2、 VM-3) に追加することと同じです。
ConfigurationData ハッシュテーブルの定義
ConfigurationData は、構成と同じスクリプトファイル内の変数として定義することも、別の.psd1ファイルで定義することもできます。
.psd1 ファイルで ConfigurationData を定義するには、構成データを表すハッシュテーブルのみを含むファイルを作成します。
たとえば、次の内容の MyData.psd1 という名前のファイルを作成できます。
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
構成データを使用した構成のコンパイル
構成データを定義した構成をコンパイルするには、構成データを ConfigurationData パラメーターの値として渡します。
これにより、 AllNodes 配列内の各エントリの MOF ファイルが作成されます。 各 MOF ファイルには、対応する配列エントリの NodeName プロパティで名前が付けられます。
たとえば、上記の MyData.psd1 ファイルのように構成データを定義した場合、構成をコンパイルすると、 VM-1.mof ファイルと VM-2.mof ファイルの両方が作成されます。
変数を使用した構成データを含む構成のコンパイル
構成と同じ .ps1 ファイル内の変数として定義されている構成データを使用するには、構成のコンパイル時に変数名を ConfigurationData パラメーターの値として渡します。
MyDscConfiguration -ConfigurationData $MyData
データファイルを使用した構成データを含む構成のコンパイル
.psd1 ファイルで定義されている構成データを使用するには、構成のコンパイル時に、そのファイルのパスと名前を ConfigurationData パラメーターの値として渡します。
MyDscConfiguration -ConfigurationData .\MyData.psd1
構成での ConfigurationData 変数の使用
DSC には、構成スクリプトで使用できる次の特別な変数が用意されています。
- $AllNodes は、 ConfigurationData で定義されているノードのコレクション全体を指します。 AllNodes コレクションは、 を使用してフィルター処理できます。Where() と .ForEach() です。
- ConfigurationData は、構成のコンパイル時にパラメーターとして渡されるハッシュ テーブル全体を参照します。
-
MyTypeName には、変数が使用される 構成 名が含まれます。 たとえば、構成
MyDscConfigurationでは、$MyTypeNameの値はMyDscConfigurationになります。 -
Node は、 を使用してフィルター処理された後、 AllNodes コレクション内の特定のエントリを参照します 。Where() または .ForEach() です。
- これらの方法の詳細については、about_arrays を参照してください。
非ノード・データの使用
前の例で見たように、 ConfigurationData ハッシュテーブルには、必要な AllNodes キーに加えて 1 つ以上のキーを含めることができます。 このトピックの例では、追加のノードを 1 つだけ使用し、 NonNodeData という名前を付けました。 ただし、任意の数の追加キーを定義し、任意の名前を付けることができます。
ノード以外のデータの使用例については、 構成データと環境データの分離を参照してください。