Korzystanie z rozszerzenia DSC programu PowerShell w celu 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 jego używania do sterowania stanem 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 ukończeniu tej lekcji zdobędziesz następujące umiejętności:

  • Poznasz bloki węzłów i konfiguracji.
  • Poznasz zasoby poświadczeń.
  • Napiszesz kod DSC programu PowerShell instalujący w sposób idempotentny 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 ramach zestawu maszyn wirtualnych, rozszerzenie DSC programu PowerShell może pomóc w wykonaniu tego zadania. Z rozszerzenia DSC programu PowerShell możesz korzystać nawet wtedy, gdy nie znasz kroków technicznych związanych z instalacją i konfiguracją oprogramowania i usług.

System Windows Server zawiera 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 z wbudowanych zasobów 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ń rozszerzenia DSC
Pakiet Instaluje lub usuwa pakiet
Rejestr Zarządza kluczem rejestru węzła (z wyjątkiem klucza HKEY Users)
Skrypt Wykonuje polecenia programu PowerShell w węźle
Usługa Zarządza usługami systemu Windows
User 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 już być częścią maszyny wirtualnej lub obrazu maszyny wirtualnej. W przeciwnym razie nie można skompilować i uruchomić zadania.

Anatomia bloku kodu DSC

Blok kodu DSC zawiera cztery sekcje. Przyjrzyj się poniższemu przykładowi. W tym przykładzie numery 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 przykładzie nazwa konfiguracji to MyDscConfiguration.

    W bloku konfiguracji opisano żądaną konfigurację. Blok konfiguracji można traktować jako funkcję. Należy jednak pamiętać, że zawiera on tylko opis zasobów, które mają zostać zainstalowane, a nie kod przeprowadzający samą instalację.

    Podobnie jak funkcja programu PowerShell blok konfiguracji może przyjmować parametry. Za pomocą parametrów można na przykład określić 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, które są generowane 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 generowanych jest wiele plików MOF.

    Notacja tablicowa w bloku węzła umożliwia wysyłanie konfiguracji do wielu hostów. Na 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 tym przypadku jeden blok zasobów odwołuje się do zasobu WindowsFeature. Zasób WindowsFeature zapewnia, że Web-Server funkcja systemu Windows jest zainstalowana.

  4. MyDscConfiguration: to wywołanie wywołuje MyDscConfiguration blok. Jest to podobne do uruchamiania funkcji. Po uruchomieniu bloku konfiguracji jest on kompilowany do dokumentu MOF (Managed Object Format). MOF jest skompilowanym językiem opracowanym przez konsorcjum Desktop Management Task Force w oparciu o język definicji interfejsu.

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

Dane konfiguracji w skrypcie DSC

W bloku danych konfiguracji można podać dane, które mogą być wymagane przez 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. Wewnątrz tablicy AllNodes należy określić dane dla węzła przy użyciu zmiennej NodeName.

W przypadku poprzedniego scenariusza załóżmy, że na serwerze internetowym, który jest zainstalowany w poszczególnych węzłach, chcesz ustawić właściwość SiteName na różne wartości. Możesz zdefiniować blok danych konfiguracji podobny do tego:

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

Jeśli chcesz ustawić taką samą wartość właściwości we wszystkich węzłach, określ zmienną NodeName = "*" w tablicy AllNodes.

Zabezpieczanie poświadczeń w skrypcie DSC

Skrypt DSC może wymagać informacji o poświadczeniach na potrzeby 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 obiekcie PSCredential. 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, należy użyć certyfikatu w danych konfiguracji. Klucz prywatny certyfikatu musi znajdować się w węźle, w którym chcesz zastosować konfigurację. Certyfikaty są konfigurowane za pomocą narzędzia LCM węzła.

Począwszy od programu PowerShell 5.1 pliki MOF w węźle są szyfrowane w stanie spoczynku. Podczas przesyłania wszystkie poświadczenia są szyfrowane za pośrednictwem składnika 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, do węzła zostaną zastosowane wszystkie pliki MOF znajdujące się w tym katalogu:

Start-DscConfiguration -path D:\

Ten krok jest podobny do trybu wypychania, który przedstawiono w poprzedniej lekcji.

Ściąganie konfiguracji dla 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 w skrypcie DSC w poprzedniej lekcji użyto modułu xSmbShare programu PowerShell, aby przekazać do rozszerzenia DSC, w jaki sposób ma zostać sprawdzony 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. Te kroki zostaną omówione bardziej szczegółowo w następnej lekcji.

Diagram przedstawiający kroki konfigurowania rozszerzenia 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 dotyczące maszyn wirtualnych są rejestrowane w konfiguracji żądanego stanu. W przypadku zmiany konfiguracji można ją przekazać do konta usługi Automation, aby maszyny wirtualne zostały automatycznie ponownie skonfigurowane.

Na poniższym diagramie przedstawiono proces narzędzia LCM podczas zarządzania żądanym stanem maszyny wirtualnej.

Diagram przedstawiający sposób sondowania maszyny wirtualnej w usłudze Azure Automation.

Twoje konto usługi Automation obsługuje poświadczenia natywnie. Ten sposób zarządzania zmniejsza złożoność zabezpieczania i pracy z poświadczeniami.