次の方法で共有


DSC で構成データを使用する

適用先:Windows PowerShell 4.0、Windows PowerShell 5.0

組み込みの DSC ConfigurationData パラメーターを使用して、構成内で使用可能なデータを定義することができます。 これにより、複数のノードや異なる環境で使用可能な 1 つの構成を作成できます。 たとえば、アプリケーションを開発している場合は、開発環境と運用環境の両方に 1 つの構成を使用し、構成データを使用して各環境のデータを指定することができます。

このトピックでは、ConfigurationData ハッシュテーブルの構造について説明します。 構成データの使用方法の例については、「構成データと環境データの分離」をご覧ください。

共通の ConfigurationData パラメーター

DSC 構成では、ConfigurationData という共通パラメーターを使用します。このパラメーターは、構成をコンパイルするときに指定します。 構成のコンパイルについては、「DSC 構成」をご覧ください。

ConfigurationData パラメーターはハッシュテーブルであり、AllNodes という名前のキーが少なくとも 1 つ必要です。 その他のキーを 1 つ以上含めることもできます。

Note

このトピックの例では、(AllNodes というキーではなく) NonNodeData という追加のキーを 1 つしか使用していませんが、追加するキーの数に制限はなく、名前も自由に付けることができます。

$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 = ""
}

すべてのノードにプロパティを適用するには、AllNodes 配列に NodeName* のメンバーを作成します。 たとえば、すべてのノードに 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-2、および VM-3) にそれぞれ追加するのと同じことです。

ConfigurationData ハッシュテーブルの定義

ConfigurationData は、(これまでの例のように) 構成として同じスクリプト ファイル内に変数として定義するか、または別個の .psd1 ファイル内に定義することができます。 ConfigurationData.psd1 ファイル内で定義するには、構成データを表すハッシュテーブルのみが含まれるファイルを作成します。

たとえば、次の内容を含む 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 で定義されたノードのコレクション全体を参照します。 .Where().ForEach() を使用すると、AllNodes コレクションをフィルター処理できます。
  • ConfigurationData は、構成のコンパイル時にパラメーターとして渡されるハッシュ テーブル全体を参照します。
  • MyTypeName には、変数がその中で使用される構成の名前が含まれています。 たとえば、構成 MyDscConfiguration では、$MyTypeName の値は MyDscConfiguration になります。
  • Node は、.Where() または .ForEach() を使用してフィルター処理された後の AllNodes コレクション内にある特定のエントリを参照します。
    • これらのメソッドの詳細については、「about_arrays」を参照してください。

ノード外のデータを使用する

上記の例でわかるように、ConfigurationData ハッシュテーブルには、必須の AllNodes キーだけでなく、複数のキーを含めることができます。 このトピックの例では、追加ノードを 1 つだけ使用し、NonNodeData という名前を付けました。 実際は、定義できる追加のキーの数に制限はなく、名前も自由に設定できます。

ノード以外のデータを使用する例は、「構成データと環境データの分離」をご覧ください。

参照