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 graag dat u weet dat een nieuwere versie van DSC nu algemeen beschikbaar is, 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 uit feedback van klanten. Gastconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.

Een DSC SMB-pullserver is een computer die als host fungeert voor SMB-bestandsshares die DSC-configuratiebestanden en DSC-resources beschikbaar maken voor doelknooppunten wanneer deze knooppunten daarom 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
  • Een client met PowerShell 4.0 of hoger configureren om gegevens op te halen uit die SMB-share

De resource xSmbShare 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.

De xSmbShare-resource installeren

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

Notitie

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

De map en bestandsshare maken

De volgende configuratie maakt gebruik van de bestandsbron om de map voor de share te maken en de xSmbShare-resource 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 deze 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-resources van de share ophalen.

Notitie

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

Bestandssysteemtoegang geven tot de pull-client

Als u ReadAccess aan een clientknooppunt geeft, heeft 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 resource cNtfsPermissionEntry , die is opgenomen 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-resources op die clientknooppunten moeten ophalen in de SMB-sharemap.

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

Notitie

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

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

De standaardindeling van modules met DSC-resource in WMF 5.0 is {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Voordat u de pull-server inpakt, verwijdert u de {Module version} map zodat het pad verandert in {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 gebruikt een Path parameter die de map opgeeft waar de configuratie-MOF zich bevindt. De cmdlet maakt een controlesombestand met de naam ConfigurationMOFName.mof.checksum, waarbij ConfigurationMOFName de naam van het configuratiemof-bestand is. Als er meer dan één MOF-configuratiebestanden in de opgegeven map zijn, wordt er een controlesom gemaakt voor elke configuratie in de map.

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

Notitie

Als u het configuratie-MOF-bestand op welke manier dan ook wijzigt, moet u ook het controlesombestand opnieuw maken.

Een pull-client instellen voor SMB

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

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

Notitie

Ter vereenvoudiging wordt in dit voorbeeld het PSDscAllowPlainTextPassword gebruikt om het doorgeven van een wachtwoord zonder opmaak aan de parameter Credential toe te staan. Zie Opties voor referenties in Configuratiegegevens voor meer 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

Met dank aan de volgende personen:

  • Mike F. Robbins, wiens berichten over het gebruik van SMB voor DSC hebben geholpen bij het informeren van de inhoud in dit onderwerp. Zijn blog is bij Mike F Robbins.
  • Serge Nikalaichyk, die de cNtfsAccessControl-module heeft geschreven. De bron voor deze module is cNtfsAccessControl.

Zie ook

overzicht van Windows PowerShell Desired State Configuration

Configuraties doorvoeren

Een pull-client instellen met behulp van het configuratie-id