Delen via


Een DSC SMB pull-server instellen

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0

Belangrijk

De Pull Server (Windows Feature DSC-Service) is een ondersteund onderdeel van Windows Server, maar er zijn geen plannen om nieuwe functies of mogelijkheden aan te bieden. We willen u laten weten dat er nu een nieuwere versie van DSC algemeen beschikbaar is, die wordt beheerd door een functie van Azure Policy met de naam gastconfiguratie. De gastconfiguratieservice combineert functies van DSC-extensie, Azure Automation State Configuration en de meest gevraagde functies op basis van feedback van klanten. Gastconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.

Een DSC SMB pull-server is een computer die SMB-bestandsshares host die DSC-configuratiebestanden en DSC-bronnen beschikbaar stellen aan doelknooppunten wanneer die knooppunten erom vragen.

Als u een SMB-pull-server voor DSC wilt gebruiken, moet u het volgende doen:

  • Een SMB-bestandsshare instellen op een server met PowerShell 4.0 of hoger
  • Configureer een client met PowerShell 4.0 of hoger om uit dat SMB-aandeel te halen

De xSmbShare-bron gebruiken om een SMB-bestandsshare te maken

Er zijn een aantal manieren om een SMB-bestandsshare in te stellen, maar laten we eens kijken hoe u dit kunt doen met behulp van DSC.

Installeer de xSmbShare-bron

Roep de cmdlet Install-Module aan om de xSmbShare-module te installeren.

Opmerking

Install-Module is opgenomen in de PowerShellGet-module , die is opgenomen in PowerShell 5.0. De xSmbShare bevat de DSC-bron xSmbShare, die kan worden gebruikt om een SMB-bestandsshare te maken.

Maak de map en bestandsshare

In de volgende configuratie wordt de bestandsbron gebruikt om de map voor de share te maken en de xSmbShare-bron om de SMB-share in te stellen:

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'
        }
    }
}

De configuratie maakt de map C:\DscSmbShare, als deze nog niet bestaat, en gebruikt die map vervolgens als een SMB-bestandsshare. FullAccess moet worden gegeven aan elk account dat moet schrijven naar of verwijderen uit de bestandsshare. ReadAccess moet worden gegeven aan alle clientknooppunten die configuraties en/of DSC-bronnen van de share halen.

Opmerking

DSC wordt standaard uitgevoerd als het systeemaccount, dus de computer zelf moet toegang hebben tot de share.

Toegang tot het bestandssysteem geven tot de pull-client

Als u ReadAccess geeft aan een clientknooppunt, krijgt dat knooppunt toegang tot de SMB-share, maar niet tot bestanden of mappen binnen die share. U moet clientknooppunten expliciet toegang verlenen tot de SMB-sharemap en submappen. We kunnen dit doen met DSC door toe te voegen met behulp van de cNtfsPermissionEntry-bron , die zich bevindt in de CNtfsAccessControl-module . Met de volgende configuratie wordt een cNtfsPermissionEntry-blok toegevoegd dat ReadAndExecute-toegang verleent tot de pull-client:

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'
        }
    }
}

Configuraties en resources plaatsen

Sla alle configuratie-MOF-bestanden en/of DSC-bronnen op die u wilt dat clientknooppunten ophalen in de SMB-sharemap.

Elk configuratie-MOF-bestand moet een naam <ConfigurationID>.mofhebben, waar <ConfigurationID> de waarde van de eigenschap ConfigurationID van de LCM van het doelknooppunt is. Zie Een pull-client instellen met behulp van configuratie-id voor meer informatie over het instellen van pull-clients.

Opmerking

U moet configuratie-id's gebruiken als u een SMB-pull-server gebruikt. Configuratienamen worden niet ondersteund voor SMB.

Elke bronmodule moet worden gezipt en benoemd volgens het volgende patroon {Module Name}_{Module Version}.zip. Een module met de naam xWebAdminstration met een moduleversie van 3.1.2.0 krijgt bijvoorbeeld de naam xWebAdministration_3.2.1.0.zip. Elke versie van een module moet in één zip-bestand staan. Afzonderlijke versies van een module in een zip-bestand worden niet ondersteund. Voordat u DSC-bronmodules inpakt voor gebruik met pull-server, moet u een kleine wijziging aanbrengen in de mappenstructuur.

Het standaardformaat van modules die DSC-bronnen bevatten in WMF 5.0 is {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Voordat u inpakt voor de pull-server, verwijdert u gewoon de {Module version} map zodat het pad .{Module Folder}\DscResources\{DSC Resource Folder}\ Met deze wijziging zipt u de map zoals hierboven beschreven en plaatst u deze zip-bestanden in de SMB-sharemap.

De MOF-controlesom maken

Een MOF-configuratiebestand moet worden gekoppeld aan een controlesombestand, zodat een LCM op een doelknooppunt de configuratie kan valideren. Als u een controlesom wilt maken, roept u de cmdlet New-DSCCheckSum aan. De cmdlet neemt een Path parameter die de map specificeert waarin de configuratie MOF zich bevindt. De cmdlet maakt een checksum-bestand met de naam ConfigurationMOFName.mof.checksum, waar ConfigurationMOFName de naam van het configuratie-mof-bestand is. Als er meer dan één configuratie MOF-bestanden in de opgegeven map staan, wordt er een controlesom gemaakt voor elke configuratie in de map.

Het checksum-bestand moet aanwezig zijn in dezelfde map als het MOF-configuratiebestand ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration standaard) en dezelfde naam hebben met de .checksum extensie toegevoegd.

Opmerking

Als u het MOF-bestand van de configuratie op enigerlei wijze wijzigt, moet u ook het controlesombestand opnieuw maken.

Een pull-client instellen voor het MKB

Als u een client wilt instellen die configuraties en/of resources ophaalt uit een SMB-share, configureert u de Local Configuration Manager (LCM) van de client met de blokken ConfigurationRepositoryShare en ResourceRepositoryShare die de share opgeven waaruit configuraties en DSC-resources moeten worden opgehaald.

Zie Een pull-client instellen met behulp van configuratie-ID voor meer informatie over het configureren van de LCM.

Opmerking

Voor de eenvoud wordt in dit voorbeeld de PSDscAllowPlainTextPassword gebruikt om het doorgeven van een wachtwoord in platte tekst aan de parameter Credential toe te staan. Zie Referentieopties in configuratiegegevens voor informatie over het veiliger doorgeven van referenties. U MOET een ConfigurationID opgeven in het blok Instellingen van een metaconfiguratie voor een SMB-pull-server, zelfs als u alleen resources ophaalt.

$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
        })
}

Dankbetuigingen

Speciale dank aan de volgende personen:

  • Mike F. Robbins, wiens berichten over het gebruik van SMB voor DSC hebben bijgedragen aan de inhoud van dit onderwerp. Zijn blog is op Mike F Robbins.
  • Serge Nikalaichyk, auteur van de cNtfsAccessControl-module . De bron voor deze module is te vinden op cNtfsAccessControl.

Zie ook

Overzicht van Windows PowerShell-configuratie voor gewenste status

Configuraties uitvoeren

Een pull-client instellen met behulp van configuratie-id