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.

Zobacz też