Używanie rozszerzenia DSC programu PowerShell do osiągnięcia żądanego stanu

Ukończone

Aby określić żądany stan maszyny wirtualnej, możesz użyć rozszerzenia DSC programu PowerShell. W tej lekcji dowiesz się więcej na temat rozszerzenia DSC programu PowerShell i sposobu używania go do kontrolowania stanu maszyn wirtualnych. W przykładowym scenariuszu użyjesz rozszerzenia DSC programu PowerShell, aby upewnić się, że usługi IIS dla systemu Windows Server są zainstalowane i skonfigurowane spójnie na wszystkich serwerach sieci Web.

Po zakończeniu tej lekcji wykonasz następujące lekcji:

  • Omówienie bloków węzłów i konfiguracji.
  • Omówienie zasobów poświadczeń.
  • Napisz kod DSC programu PowerShell, aby zainstalować idempotentnie usługi Microsoft IIS.

Zasoby DSC

Wiesz już, że rozszerzenie DSC programu PowerShell to deklaratywny język skryptowy. Programowanie deklaratywne koncentruje się na wynikach, a nie na drodze. Jeśli musisz skonfigurować i wdrożyć zasób platformy Azure w spójny sposób w zestawie maszyn wirtualnych, rozszerzenie DSC programu PowerShell może pomóc. Możesz użyć rozszerzenia DSC programu PowerShell, nawet jeśli nie znasz kroków technicznych dotyczących instalowania i konfigurowania oprogramowania i usług.

System Windows Server ma zestaw wbudowanych zasobów DSC programu PowerShell. Te zasoby można wyświetlić, uruchamiając Get-DSCResource polecenie cmdlet programu PowerShell.

Get-DscResource | select Name,Module,Properties

W poniższej tabeli wymieniono niektóre wbudowane zasoby DSC programu PowerShell.

Zasób opis
Plik Zarządza plikami i folderami w węźle
Archiwizuj Dekompresuje archiwum w formacie zip
Środowisko Zarządza zmiennymi środowiskowymi systemu
Dziennik Zapisuje komunikat w dzienniku zdarzeń DSC
Pakiet Instaluje lub usuwa pakiet
Rejestr Zarządza kluczem rejestru węzła (z wyjątkiem użytkowników HKEY)
Skrypt Wykonuje polecenia programu PowerShell w węźle
Service Zarządza usługami systemu Windows
Użytkownik Zarządza użytkownikami lokalnymi w węźle
Windowsfeature Dodaje lub usuwa rolę lub funkcję w węźle
WindowsOptionalFeature Dodaje lub usuwa opcjonalną rolę lub funkcję w węźle
WindowsProcess Zarządza procesem systemu Windows

Aby uzyskać bardziej złożone zasoby, takie jak integracja z usługą Active Directory, użyj zestawu DSC Resource Kit, który jest aktualizowany co miesiąc. Na końcu tego modułu znajduje się link do zestawu DSC Resource Kit.

Zasób, który chcesz skonfigurować, musi być już częścią maszyny wirtualnej lub części obrazu maszyny wirtualnej. W przeciwnym razie nie można skompilować i uruchomić zadania.

Anatomia bloku kodu DSC

Blok kodu DSC zawiera cztery sekcje. Użyj poniższego przykładu, aby przyjrzeć się bliżej. W tym przykładzie liczby nie są częścią składni. Są one oznaczone jako komentarze i odnoszą się do sekcji w dyskusji, która następuje poniżej.

Configuration MyDscConfiguration {              ##1
    Node "localhost" {                          ##2
        WindowsFeature MyFeatureInstance {      ##3
            Ensure = 'Present'
            Name = 'Web-Server'
        }
    }
}
MyDscConfiguration -OutputPath C:\temp\         ##4

Składnia konfiguracji zawiera następujące sekcje:

  1. Konfiguracja: blok konfiguracji jest najbardziej zewnętrznym blokiem skryptu. Zaczyna się ono od słowa kluczowego Configuration i podaj nazwę. W tym miejscu nazwa konfiguracji to MyDscConfiguration.

    Blok konfiguracji opisuje żądaną konfigurację. Blok konfiguracji, taki jak funkcja, z tą różnicą, że zawiera opis zasobów do zainstalowania, a nie kodu do ich zainstalowania.

    Podobnie jak funkcja programu PowerShell, blok konfiguracji może przyjmować parametry. Można na przykład sparametryzować nazwę węzła.

    Configuration MyDscConfiguration {
    param
    (
        [string] $ComputerName='localhost'
    )
    
    Node $ComputerName {
        ...
    }
    
  2. Węzeł: można mieć co najmniej jeden blok węzła. Blok węzła określa nazwy plików mof generowanych podczas kompilowania konfiguracji. Na przykład nazwa localhost węzła generuje tylko jeden plik localhost.mof , ale można wysłać ten plik mof do dowolnego serwera. W przypadku używania wielu nazw węzłów generujesz wiele plików mof.

    Użyj notacji tablicy w bloku węzła, aby kierować wiele hostów. Przykład:

    Node @('WEBSERVER1', 'WEBSERVER2', 'WEBSERVER3')
    
  3. Zasób: możesz użyć co najmniej jednego bloku zasobów, aby określić zasoby do skonfigurowania. W takim przypadku pojedynczy blok zasobów odwołuje się do WindowsFeature zasobu. Zasób WindowsFeature zapewnia, że Web-Server funkcja systemu Windows jest zainstalowana.

  4. MyDscConfiguration: to wywołanie wywołuje MyDscConfiguration blok. To jak uruchamianie funkcji. Po uruchomieniu bloku konfiguracji jest on kompilowany w dokumencie Managed Object Format (MOF). MOF to skompilowany język utworzony przez grupę zadaniową zarządzania pulpitem i oparty na języku definicji interfejsu.

    Dla każdego węzła wymienionego w skryscie DSC plik mof jest tworzony w folderze określonym za pomocą parametru -OutputPath .

Dane konfiguracji w skryscie DSC

W bloku danych konfiguracji można podać dane, których może potrzebować proces konfiguracji. Te dane można zastosować do nazwanych węzłów lub zastosować je globalnie we wszystkich węzłach.

Blok danych konfiguracji to nazwany blok zawierający tablicę węzłów. Tablica musi mieć nazwę AllNodes. AllNodes Wewnątrz tablicy należy określić dane dla węzła przy użyciu zmiennej NodeName .

Korzystając z poprzedniego scenariusza, załóżmy, że na serwerze internetowym zainstalowanym w każdym węźle chcesz ustawić SiteName właściwość na różne wartości. Możesz zdefiniować blok danych konfiguracji w następujący sposób:

$datablock =
@{
    AllNodes =
    @(
        @{
            NodeName = "WEBSERVER1"
            SiteName = "WEBSERVER1-Site"
        },
        @{
            NodeName = "WEBSERVER2"
            SiteName = "WEBSERVER2-Site"
        },
        @{
            NodeName = "WEBSERVER3"
            SiteName = "WEBSERVER3-Site"
        }
    );
}

Jeśli chcesz ustawić właściwość na tę samą wartość w każdym węźle, określ NodeName = "*" w tablicy AllNodes .

Zabezpieczanie poświadczeń w skrycie DSC

Skrypt DSC może wymagać informacji o poświadczeniach dla procesu konfiguracji. Unikaj umieszczania poświadczeń w postaci zwykłego tekstu w narzędziu do zarządzania kodem źródłowym. Zamiast tego konfiguracje DSC w usłudze Azure Automation mogą odwoływać się do poświadczeń przechowywanych w PSCredential obiekcie. Parametr skryptu DSC można zdefiniować przy użyciu PSCredential typu . Przed uruchomieniem skryptu pobierz poświadczenia użytkownika, użyj poświadczeń, aby utworzyć nowy PSCredential obiekt i przekazać ten obiekt do skryptu jako parametr.

Poświadczenia nie są domyślnie szyfrowane w plikach mof; są one widoczne jako zwykły tekst. Aby zaszyfrować poświadczenia, użyj certyfikatu w danych konfiguracji. Klucz prywatny certyfikatu musi znajdować się w węźle, w którym chcesz zastosować konfigurację. Certyfikaty są konfigurowane za pośrednictwem menedżera LCM węzła.

Począwszy od programu PowerShell 5.1 pliki mof w węźle są szyfrowane w spoczynku. Podczas przesyłania wszystkie poświadczenia są szyfrowane za pośrednictwem usługi WinRM.

Wypychanie konfiguracji do węzła

Po utworzeniu skompilowanego pliku mof dla konfiguracji możesz wypchnąć go do węzła Start-DscConfiguration , uruchamiając polecenie cmdlet . Jeśli dodasz ścieżkę do katalogu, zastosuje on dowolny plik mof, który znajdzie w tym katalogu do węzła:

Start-DscConfiguration -path D:\

Ten krok odpowiada trybowi wypychania, który przedstawiono w poprzedniej lekcji.

Ściąganie konfiguracji węzłów

Jeśli masz setki maszyn wirtualnych na platformie Azure, tryb ściągania jest bardziej odpowiedni niż tryb wypychania.

Konto usługi Azure Automation można skonfigurować tak, aby działało jako usługa ściągania; wystarczy przekazać konfigurację do konta usługi Automation, a następnie zarejestrować maszyny wirtualne przy użyciu tego konta.

Przed skompilowanie konfiguracji zaimportuj do konta usługi Automation wszystkie moduły programu PowerShell, których potrzebuje proces DSC. Te moduły definiują sposób wykonania zadania w celu osiągnięcia żądanego stanu.

Na przykład skrypt DSC w poprzedniej lekcji użył modułu xSmbShare programu PowerShell, aby poinformować DSC , jak sprawdzić stan udziału plików. Rozszerzenie DSC automatycznie ściąga moduły z konta usługi Automation do węzła.

Na poniższym diagramie przedstawiono sposób konfigurowania usługi Azure Automation State Configuration. W następnej lekcji zapoznamy się z tymi krokami.

Diagram that shows the steps to set up DSC.

Domyślnie po 15 minutach narzędzie LCM na maszynie wirtualnej sonduje usługę Azure Automation pod kątem wszelkich zmian w pliku konfiguracji DSC. Wszelkie zmiany w maszynach wirtualnych są rejestrowane w konfiguracji żądanego stanu. Jeśli zmienisz konfigurację, możesz przekazać ją do konta usługi Automation, aby automatycznie ponownie skonfigurować maszyny wirtualne.

Na poniższym diagramie przedstawiono proces LCM do zarządzania żądanym stanem na maszynie wirtualnej.

Diagram that shows how the VM polls Azure Automation.

Twoje konto usługi Automation obsługuje poświadczenia natywnie. To zarządzanie zmniejsza złożoność zabezpieczania i pracy z poświadczeniami.