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-2
a 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.mof
VM-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 hodnotuMyDscConfiguration
. - 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í.