次の方法で共有


DSC での構成データの使用

適用対象: 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-1VM-2VM-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 という名前を付けました。 ただし、任意の数の追加キーを定義し、任意の名前を付けることができます。

ノード以外のデータの使用例については、 構成データと環境データの分離を参照してください。

こちらもご覧ください