Konfigurowanie serwera ściągania SMB platformy DSC

Dotyczy: Windows PowerShell 4.0, Windows PowerShell 5.0

Ważne

Serwer ściągania (Windows Feature DSC-Service) jest obsługiwanym składnikiem systemu Windows Server, jednak nie ma planów oferowania nowych funkcji lub możliwości. Chcielibyśmy wiedzieć, że nowsza wersja dsC jest teraz ogólnie dostępna, zarządzana przez funkcję Azure Policy o nazwie konfiguracja gościa. Usługa konfiguracji gościa łączy funkcje rozszerzenia DSC, Azure Automation State Configuration i najczęściej żądanych funkcji z opinii klientów. Konfiguracja gościa obejmuje również obsługę maszyn hybrydowych za pośrednictwem serwerów z obsługą usługi Arc.

Serwer ściągania SMB DSC to komputer hostujący udziały plików SMB, które udostępniają pliki konfiguracji DSC i zasoby DSC dla węzłów docelowych, gdy te węzły pytają o nie.

Aby użyć serwera ściągania SMB dla rozszerzenia DSC, należy wykonać:

  • Konfigurowanie udziału plików SMB na serwerze z programem PowerShell 4.0 lub nowszym
  • Konfigurowanie klienta z programem PowerShell 4.0 lub nowszym w celu pobrania z tego udziału SMB

Tworzenie udziału plików SMB przy użyciu zasobu xSmbShare

Istnieje wiele sposobów konfigurowania udziału plików SMB, ale przyjrzyjmy się, jak to zrobić za pomocą dsC.

Instalowanie zasobu xSmbShare

Wywołaj polecenie cmdlet Install-Module , aby zainstalować moduł xSmbShare .

Uwaga

Install-Module jest dołączony do modułu PowerShellGet , który jest dołączony do programu PowerShell 5.0. Element xSmbShare zawiera zasób DSC xSmbShare, który może służyć do tworzenia udziału plików SMB.

Tworzenie katalogu i udziału plików

Poniższa konfiguracja używa zasobu Plik do utworzenia katalogu dla udziału i zasobu xSmbShare w celu skonfigurowania udziału SMB:

Configuration SmbShare
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }
    }
}

Konfiguracja tworzy katalog C:\DscSmbShare, jeśli jeszcze nie istnieje, a następnie używa tego katalogu jako udziału plików SMB. Funkcja FullAccess powinna zostać nadana każdemu kontu, które musi zapisywać w udziale plików lub usuwać je z tego udziału. Funkcja ReadAccess musi być nadana wszystkim węzłom klienckim, które uzyskują konfiguracje i/lub zasoby DSC z udziału.

Uwaga

DsC jest domyślnie uruchamiane jako konto systemowe, więc sam komputer musi mieć dostęp do udziału.

Nadaj systemowi plików dostęp do klienta ściągania

Nadanie funkcji ReadAccess węzłowi klienta umożliwia węzłowi dostęp do udziału SMB, ale nie do plików lub folderów w tym udziale. Należy jawnie udzielić węzłom klienckim dostępu do folderu udziału SMB i podfolderów. Możemy to zrobić za pomocą rozszerzenia DSC, dodając za pomocą zasobu cNtfsPermissionEntry , który znajduje się w module CNtfsAccessControl . Poniższa konfiguracja dodaje blok cNtfsPermissionEntry , który udziela dostępu ReadAndExecute do klienta ściągania:

Configuration DSCSMB
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare
    Import-DscResource -ModuleName cNtfsAccessControl

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }

        cNtfsPermissionEntry PermissionSet1
        {
            Ensure = 'Present'
            Path = 'C:\DscSmbShare'
            Principal = 'myDomain\Contoso-Server$'
            AccessControlInformation = @(
                cNtfsAccessControlInformation
                {
                    AccessControlType = 'Allow'
                    FileSystemRights = 'ReadAndExecute'
                    Inheritance = 'ThisFolderSubfoldersAndFiles'
                    NoPropagateInherit = $false
                }
            )
            DependsOn = '[File]CreateFolder'
        }
    }
}

Umieszczanie konfiguracji i zasobów

Zapisz wszystkie pliki MOF konfiguracji i/lub zasoby DSC, które mają być pobierane przez węzły klienckie w folderze udziału SMB.

Każdy plik MOF konfiguracji musi mieć nazwę <ConfigurationID>.mof, gdzie <ConfigurationID> jest wartością właściwości ConfigurationID węzła docelowego LCM. Aby uzyskać więcej informacji na temat konfigurowania klientów ściągania, zobacz Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji.

Uwaga

Jeśli używasz serwera ściągania SMB, musisz użyć identyfikatorów konfiguracji. Nazwy konfiguracji nie są obsługiwane w przypadku protokołu SMB.

Każdy moduł zasobów musi być spakowany i nazwany zgodnie z poniższym wzorcem {Module Name}_{Module Version}.zip. Na przykład moduł o nazwie xWebAdminstration z modułem w wersji 3.1.2.0 ma nazwę xWebAdministration_3.2.1.0.zip. Każda wersja modułu musi być zawarta w jednym pliku zip. Oddzielne wersje modułu w pliku zip nie są obsługiwane. Przed pakowaniem modułów zasobów DSC do użycia z serwerem ściągania należy wprowadzić niewielką zmianę w strukturze katalogów.

Domyślnym formatem modułów zawierających zasób DSC w programie WMF 5.0 jest {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Przed spakowaniem serwera ściągania po prostu usuń {Module version} folder, aby ścieżka stała się {Module Folder}\DscResources\{DSC Resource Folder}\. Dzięki tej zmianie spakuj folder zgodnie z powyższym opisem i umieść te pliki zip w folderze udziału SMB.

Tworzenie sumy kontrolnej MOF

Plik MOF konfiguracji musi być sparowany z plikiem sumy kontrolnej, aby program LCM w węźle docelowym mógł zweryfikować konfigurację. Aby utworzyć sumę kontrolną, wywołaj polecenie cmdlet New-DSCCheckSum . Polecenie cmdlet przyjmuje Path parametr określający folder, w którym znajduje się konfiguracja MOF. Polecenie cmdlet tworzy plik sumy kontrolnej o nazwie ConfigurationMOFName.mof.checksum, gdzie ConfigurationMOFName jest nazwą pliku mof konfiguracji. Jeśli w określonym folderze znajduje się więcej niż jeden plik MOF konfiguracji, dla każdej konfiguracji w folderze zostanie utworzona suma kontrolna.

Plik sumy kontrolnej musi znajdować się w tym samym katalogu co plik MOF konfiguracji ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration domyślnie) i mieć tę samą nazwę z dołączonym .checksum rozszerzeniem.

Uwaga

Jeśli zmienisz plik MOF konfiguracji w jakikolwiek sposób, musisz również ponownie utworzyć plik sumy kontrolnej.

Konfigurowanie klienta ściągania dla protokołu SMB

Aby skonfigurować klienta, który pobiera konfiguracje i/lub zasoby z udziału SMB, należy skonfigurować lokalne Configuration Manager klienta (LCM) za pomocą polecenia ConfigurationRepositoryShare i ResourceRepositoryShare bloków określających udział, z którego mają być pobierane konfiguracje i zasoby DSC.

Aby uzyskać więcej informacji na temat konfigurowania programu LCM, zobacz Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji.

Uwaga

Dla uproszczenia w tym przykładzie użyto parametru PSDscAllowPlainTextPassword , aby umożliwić przekazywanie hasła zwykłego tekstu do parametru Credential . Aby uzyskać więcej informacji o przekazywaniu poświadczeń, zobacz Opcje poświadczeń w danych konfiguracji. Musisz określić identyfikator Konfiguracji w bloku Ustawienia metakonfiguracji serwera ściągania SMB, nawet jeśli ściągasz tylko zasoby.

$secpasswd = ConvertTo-SecureString "Pass1Word" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("TestUser", $secpasswd)

[DSCLocalConfigurationManager()]
configuration SmbCredTest
{
    Node $AllNodes.NodeName
    {
        Settings
        {
            RefreshMode = 'Pull'
            RefreshFrequencyMins = 30
            RebootNodeIfNeeded = $true
            ConfigurationID    = '16db7357-9083-4806-a80c-ebbaf4acd6c1'
        }

         ConfigurationRepositoryShare SmbConfigShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds
        }

        ResourceRepositoryShare SmbResourceShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds

        }
    }
}

$ConfigurationData = @{
    AllNodes = @(
        @{
            #the "*" means "all nodes named in ConfigData" so we don't have to repeat ourselves
            NodeName="localhost"
            PSDscAllowPlainTextPassword = $true
        })
}

Podziękowania

Specjalne podziękowania dla następujących osób:

  • Mike F. Robbins, którego wpisy dotyczące korzystania z protokołu SMB dla DSC pomogły poinformować zawartość w tym temacie. Jego blog jest w Mike F Robbins.
  • Serge Nikalaichyk, który utworzył moduł cNtfsAccessControl . Źródłem tego modułu jest cNtfsAccessControl.

Zobacz też

omówienie Windows PowerShell Desired State Configuration

Realizacja konfiguracji

Konfigurowanie klienta ściągania przy użyciu identyfikatora konfiguracji