Korzystanie z danych konfiguracji w usłudze DSC
Dotyczy: Windows PowerShell 4.0, Windows PowerShell 5.0
Korzystając z wbudowanego parametru DSC ConfigurationData , można zdefiniować dane, które mogą być używane w ramach konfiguracji. Dzięki temu można utworzyć jedną konfigurację, która może być używana dla wielu węzłów lub w różnych środowiskach. Jeśli na przykład tworzysz aplikację, możesz użyć jednej konfiguracji dla środowisk deweloperskich i produkcyjnych, a następnie użyć danych konfiguracji do określenia danych dla każdego środowiska.
W tym temacie opisano strukturę tabeli skrótów ConfigurationData . Przykłady używania danych konfiguracji można znaleźć w temacie Separating configuration and environment data (Oddzielanie danych konfiguracji i środowiska).
Typowy parametr ConfigurationData
Konfiguracja DSC przyjmuje wspólny parametr ConfigurationData określony podczas kompilowania konfiguracji. Aby uzyskać informacje na temat kompilowania konfiguracji, zobacz Konfiguracje DSC.
Parametr ConfigurationData jest tabelą skrótów, która musi mieć co najmniej jeden klucz o nazwie AllNodes. Może również mieć jeden lub więcej innych kluczy.
Uwaga
W przykładach w tym temacie użyto pojedynczego dodatkowego klucza (innego niż nazwany klucz AllNodes ) o nazwie NonNodeData
, ale można uwzględnić dowolną liczbę dodatkowych kluczy i nazwać je dowolną.
$MyData =
@{
AllNodes = @()
NonNodeData = ""
}
Wartość klucza AllNodes jest tablicą. Każdy element tej tablicy jest również tabelą skrótów, która musi mieć co najmniej jeden klucz o nazwie NodeName:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
},
@{
NodeName = "VM-2"
},
@{
NodeName = "VM-3"
}
);
NonNodeData = ""
}
Do każdej tabeli skrótów można również dodać inne klucze:
$MyData =
@{
AllNodes =
@(
@{
NodeName = "VM-1"
Role = "WebServer"
},
@{
NodeName = "VM-2"
Role = "SQLServer"
},
@{
NodeName = "VM-3"
Role = "WebServer"
}
);
NonNodeData = ""
}
Aby zastosować właściwość do wszystkich węzłów, można utworzyć element członkowski tablicy AllNodes, która ma wartość NodeName .*
Aby na przykład nadać każdemu węzłowi LogPath
właściwość, można to zrobić:
$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"
}
);
}
Jest to odpowiednik dodawania właściwości o nazwie LogPath
z wartością "C:\Logs"
do każdego z pozostałych bloków (VM-1
, VM-2
, i VM-3
).
Definiowanie tabeli skrótów ConfigurationData
Element ConfigurationData można zdefiniować jako zmienną w tym samym pliku skryptu co konfiguracja (jak w poprzednich przykładach) lub w osobnym .psd1
pliku. Aby zdefiniować wartość ConfigurationData w .psd1
pliku, utwórz plik zawierający tylko tabelę skrótów reprezentującą dane konfiguracji.
Na przykład można utworzyć plik o nazwie o MyData.psd1
następującej zawartości:
@{
AllNodes =
@(
@{
NodeName = 'VM-1'
FeatureName = 'Web-Server'
},
@{
NodeName = 'VM-2'
FeatureName = 'Hyper-V'
}
)
}
Kompilowanie konfiguracji przy użyciu danych konfiguracji
Aby skompilować konfigurację, dla której zdefiniowano dane konfiguracji, należy przekazać dane konfiguracji jako wartość parametru ConfigurationData .
Spowoduje to utworzenie pliku MOF dla każdego wpisu w tablicy AllNodes . Każdy plik MOF będzie mieć nazwę z właściwością NodeName
odpowiedniego wpisu tablicy.
Jeśli na przykład zdefiniujesz dane konfiguracji, tak jak w MyData.psd1
powyższym pliku, skompilowanie konfiguracji spowoduje utworzenie plików i VM-1.mof
.VM-2.mof
Kompilowanie konfiguracji przy użyciu danych konfiguracji przy użyciu zmiennej
Aby użyć danych konfiguracji zdefiniowanych jako zmienna w tym samym .ps1
pliku co konfiguracja, należy przekazać nazwę zmiennej jako wartość parametru ConfigurationData podczas kompilowania konfiguracji:
MyDscConfiguration -ConfigurationData $MyData
Kompilowanie konfiguracji przy użyciu danych konfiguracji przy użyciu pliku danych
Aby użyć danych konfiguracji zdefiniowanych w pliku psd1, należy przekazać ścieżkę i nazwę tego pliku jako wartość parametru ConfigurationData podczas kompilowania konfiguracji:
MyDscConfiguration -ConfigurationData .\MyData.psd1
Używanie zmiennych ConfigurationData w konfiguracji
Rozszerzenie DSC udostępnia następujące zmienne specjalne, których można użyć w skrycie konfiguracji:
- $AllNodes odnosi się do całej kolekcji węzłów zdefiniowanych w obszarze ConfigurationData. Kolekcję AllNodes można filtrować przy użyciu polecenia . Where() i . ForEach().
- ConfigurationData odnosi się do całej tabeli skrótów, która jest przekazywana jako parametr podczas kompilowania konfiguracji.
- MyTypeName zawiera nazwę konfiguracji używaną w zmiennej . Na przykład w konfiguracji
MyDscConfiguration
$MyTypeName
parametr będzie miał wartośćMyDscConfiguration
. - Węzeł odwołuje się do określonego wpisu w kolekcji AllNodes po odfiltrowyniu za pomocą polecenia . Where() lub . ForEach().
- Więcej informacji na temat tych metod można uzyskać w about_arrays
Korzystanie z danych innych niż węzły
Jak pokazano w poprzednich przykładach, tabela skrótów ConfigurationData może zawierać co najmniej jeden klucz oprócz wymaganego klucza AllNodes . W przykładach w tym temacie użyliśmy tylko jednego dodatkowego węzła i nazwaliśmy go NonNodeData
. Można jednak zdefiniować dowolną liczbę dodatkowych kluczy i nadać im dowolną nazwę.
Przykład użycia danych innych niż węzły można znaleźć w temacie Oddzielanie danych konfiguracji i środowiska.