Použití konfiguračních dat v DSC

Platí pro: Windows PowerShell 4.0, Windows PowerShell 5.0

Pomocí integrovaného parametru DSC ConfigurationData můžete definovat data, která se dají použít v rámci konfigurace. To vám umožní vytvořit jednu konfiguraci, která se dá použít pro více uzlů nebo pro různá prostředí. Pokud například vyvíjíte aplikaci, můžete použít jednu konfiguraci pro vývojové i produkční prostředí a pomocí konfiguračních dat zadat data pro každé prostředí.

Toto téma popisuje strukturu hodnoty hashtable ConfigurationData . Příklady použití konfiguračních dat najdete v tématu Oddělení dat konfigurace a prostředí.

Společný parametr ConfigurationData

Konfigurace DSC přebírá běžný parametr ConfigurationData, který zadáte při kompilaci konfigurace. Informace o kompilaci konfigurací najdete v tématu Konfigurace DSC.

Parametr ConfigurationData je hashtable, který musí mít aspoň jeden klíč s názvem AllNodes. Může mít také jeden nebo více dalších klíčů.

Poznámka

Příklady v tomto tématu používají jeden další klíč (jiný než pojmenovaný klíč AllNodes ) s názvem NonNodeData, ale můžete zahrnout libovolný počet dalších klíčů a pojmenovat je podle potřeby.

$MyData =
@{
    AllNodes = @()
    NonNodeData = ""
}

Hodnota klíče AllNodes je pole. Každý prvek tohoto pole je také hashovací tabulka, která musí mít alespoň jeden klíč s názvem NodeName:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
        },


        @{
            NodeName = "VM-2"
        },


        @{
            NodeName = "VM-3"
        }
    );

    NonNodeData = ""
}

Ke každé tabulce hash můžete přidat i další klíče:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
            Role     = "WebServer"
        },


        @{
            NodeName = "VM-2"
            Role     = "SQLServer"
        },


        @{
            NodeName = "VM-3"
            Role     = "WebServer"
        }
    );

    NonNodeData = ""
}

Chcete-li použít vlastnost pro všechny uzly, můžete vytvořit člen pole AllNodes, který má NodeName .* Pokud například chcete dát každému LogPath uzlu vlastnost, můžete to udělat takto:

$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"
        }
    );
}

Jedná se o ekvivalent přidání vlastnosti s názvem LogPath s hodnotou "C:\Logs" ke každému z ostatních bloků (VM-1, VM-2a VM-3).

Definování hodnoty hashtable ConfigurationData

ConfigurationData můžete definovat buď jako proměnnou ve stejném souboru skriptu jako konfiguraci (jako v předchozích příkladech), nebo v samostatném .psd1 souboru. Chcete-li definovat ConfigurationData v .psd1 souboru, vytvořte soubor, který obsahuje pouze hashtable, který představuje konfigurační data.

Můžete například vytvořit soubor s názvem MyData.psd1 s následujícím obsahem:

@{
    AllNodes =
    @(
        @{
            NodeName    = 'VM-1'
            FeatureName = 'Web-Server'
        },

        @{
            NodeName    = 'VM-2'
            FeatureName = 'Hyper-V'
        }
    )
}

Kompilace konfigurace s konfiguračními daty

Chcete-li zkompilovat konfiguraci, pro kterou jste definovali konfigurační data, předáte konfigurační data jako hodnotu parametru ConfigurationData .

Tím se vytvoří soubor MOF pro každou položku v poli AllNodes . Každý soubor MOF bude mít název s NodeName vlastností odpovídající položky pole.

Pokud například definujete konfigurační data jako ve výše uvedeném MyData.psd1 souboru, kompilace konfigurace vytvoří soubory a VM-1.mofVM-2.mof .

Kompilace konfigurace s konfiguračními daty pomocí proměnné

Pokud chcete použít konfigurační data, která jsou definovaná jako proměnná ve stejném .ps1 souboru jako konfigurace, předáte název proměnné jako hodnotu parametru ConfigurationData při kompilaci konfigurace:

MyDscConfiguration -ConfigurationData $MyData

Kompilace konfigurace s konfiguračními daty pomocí datového souboru

Pokud chcete použít konfigurační data definovaná v souboru .psd1, předáte cestu a název tohoto souboru jako hodnotu parametru ConfigurationData při kompilaci konfigurace:

MyDscConfiguration -ConfigurationData .\MyData.psd1

Použití konfiguraceData proměnných v konfiguraci

DSC poskytuje následující speciální proměnné, které lze použít v konfiguračním skriptu:

  • $AllNodes odkazuje na celou kolekci uzlů definovaných v ConfigurationData. Kolekci AllNodes můžete filtrovat pomocí příkazu . Where() a . ForEach().
  • ConfigurationData odkazuje na celou tabulku hash, která se předává jako parametr při kompilaci konfigurace.
  • MyTypeName obsahuje název konfigurace , ve kterém se proměnná používá. Například v konfiguraci MyDscConfiguration$MyTypeName bude mít hodnota hodnotu MyDscConfiguration.
  • Uzel odkazuje na konkrétní položku v kolekci AllNodes po vyfiltrování pomocí . Where() nebo . ForEach().
    • Další informace o těchto metodách najdete v about_arrays

Použití dat, která nejsou uzly

Jak jsme viděli v předchozích příkladech, hashtable ConfigurationData může mít kromě požadovaného klíče AllNodes ještě jeden nebo více klíčů. V příkladech v tomto tématu jsme použili pouze jeden další uzel a pojmenovali ho NonNodeData. Můžete ale definovat libovolný počet dalších klíčů a pojmenovat je podle potřeby.

Příklad použití dat, která nejsou uzly, najdete v tématu Oddělení konfiguračních dat a dat prostředí.

Viz také