Поделиться через


Настройка пул-сервера DSC SMB

Область применения: Windows PowerShell 4.0, Windows PowerShell 5.0

Это важно

Pull Server (Windows Feature DSC-Service) является поддерживаемым компонентом Windows Server, однако предложение новых функций или возможностей не планируется. Мы хотели бы, чтобы вы знали, что более новая версия DSC теперь общедоступна, управляется функцией Политики Azure под названием гостевая конфигурация. Служба гостевой конфигурации сочетает в себе функции расширения DSC, конфигурации состояния службы автоматизации Azure и наиболее часто запрашиваемые функции из отзывов клиентов. Гостевая конфигурация также включает поддержку гибридных компьютеров через серверы с поддержкой Arc.

Опрашивающий сервер DSC SMB — это компьютер, на котором размещаются общие папки SMB, которые делают файлы конфигурации DSC и ресурсы DSC доступными для целевых узлов, когда эти узлы запрашивают их.

Чтобы использовать опрашивающий сервер SMB для DSC, необходимо:

  • Настройка общей папки SMB на сервере под управлением PowerShell 4.0 или более поздней версии
  • Настройка клиента под управлением PowerShell 4.0 или более поздней версии для извлечения данных из этой общей папки SMB

Использование ресурса xSmbShare для создания общей папки SMB

Существует несколько способов настроить общую папку SMB, но давайте рассмотрим, как это можно сделать с помощью DSC.

Установка ресурса xSmbShare

Вызовите командлет Install-Module, чтобы установить модуль xSmbShare .

Замечание

Install-Module входит в состав модуля PowerShellGet , который входит в состав PowerShell 5.0. Файл xSmbShare содержит ресурс DSC xSmbShare, который можно использовать для создания общего ресурса SMB.

Создание каталога и общей папки

В следующей конфигурации используется ресурс File для создания каталога для общей папки и ресурс xSmbShare для настройки общей папки 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'
        }
    }
}

Конфигурация создает каталог C:\DscSmbShare, если он еще не существует, а затем использует этот каталог в качестве общего ресурса SMB. FullAccess должен быть предоставлен любой учетной записи, которой необходимо записывать или удалять данные из общего файлового ресурса. Доступ на чтение должен быть предоставлен всем клиентским узлам, которые получают конфигурации и/или ресурсы DSC из общей папки.

Замечание

DSC работает как системная учетная запись по умолчанию, поэтому сам компьютер должен иметь доступ к общей папке.

Предоставление файловой системе доступа к опрашивающему клиенту

Предоставление доступа для чтения клиентскому узлу позволяет этому узлу получать доступ к общей папке SMB, но не к файлам или папкам в этой общей папке. Необходимо явно предоставить клиентским узлам доступ к общей папке и вложенным папкам SMB. Мы можем сделать это с помощью DSC, добавив с помощью ресурса cNtfsPermissionEntry , который содержится в модуле CNtfsAccessControl . В следующей конфигурации добавляется блок cNtfsPermissionEntry , который предоставляет ReadAndExecute доступ к опрашивающему клиенту:

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

Размещение конфигураций и ресурсов

Сохраните все конфигурационные MOF-файлы и/или ресурсы DSC, которые вы хотите получить от клиентских узлов, в папке общего ресурса SMB.

Любой файл MOF конфигурации должен иметь имя <ConfigurationID>.mof, где <ConfigurationID> — значение свойства ConfigurationID LCM целевого узла. Дополнительные сведения о настройке опрашивающих клиентов см. в разделе Настройка опрашивающего клиента с помощью идентификатора конфигурации.

Замечание

Если используется опрашивающий сервер SMB, необходимо использовать идентификаторы конфигурации. Имена конфигураций для SMB не поддерживаются.

Каждый ресурсный модуль должен быть заархивирован и назван в соответствии со следующей схемой {Module Name}_{Module Version}.zip. Например, модуль с именем xWebAdminstration и версией модуля 3.1.2.0 будет называться xWebAdministration_3.2.1.0.zip. Каждая версия модуля должна содержаться в одном zip-файле. Отдельные версии модуля в zip-файле не поддерживаются. Прежде чем упаковывать ресурсные модули DSC для использования с опрашивающим сервером, необходимо внести небольшое изменение в структуру каталогов.

Формат модулей, содержащих ресурс DSC по умолчанию в WMF 5.0, — {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Перед упаковкой для опрашивающего сервера просто удалите папку, {Module version} чтобы путь стал {Module Folder}\DscResources\{DSC Resource Folder}\. С этим изменением заархивируйте папку, как описано выше, и поместите эти zip-файлы в папку общего доступа SMB.

Создание контрольной суммы MOF

Файл MOF конфигурации должен быть связан с файлом контрольной суммы, чтобы LCM на целевом узле мог проверить конфигурацию. Чтобы создать контрольную сумму, вызовите командлет New-DSCCheckSum . Командлет принимает Path параметр, указывающий папку, в которой находится MOF конфигурации. Командлет создает файл контрольной суммы с именем ConfigurationMOFName.mof.checksum, где ConfigurationMOFName — имя файла mof конфигурации. Если в указанной папке имеется более одного файла MOF конфигурации, для каждой конфигурации в папке создается контрольная сумма.

Файл контрольной суммы должен находиться в том же каталоге, что и файл MOF конфигурации ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration по умолчанию), и иметь то же имя с добавленным расширением .checksum .

Замечание

Если вы каким-либо образом изменяете файл MOF конфигурации, необходимо также повторно создать файл контрольной суммы.

Настройка опрашивающего клиента для SMB

Чтобы настроить клиент, который извлекает конфигурации и/или ресурсы из общей папки SMB, необходимо настроить диспетчер локальных конфигураций клиента (LCM) с блоками ConfigurationRepositoryShare и ResourceRepositoryShare , которые указывают общую папку, из которой извлекаются конфигурации и ресурсы DSC.

Дополнительные сведения о настройке LCM см. в разделе Настройка опрашивающего клиента с использованием идентификатора конфигурации.

Замечание

Для простоты в этом примере используется пароль PSDscAllowPlainTextPassword , позволяющий передавать пароль в виде обычного текста в параметр Credential . Сведения о более безопасной передаче учетных данных см. в разделе Параметры учетных данных в данных конфигурации. Необходимо указатьConfigurationID в блоке Settings метаконфигурации для опрашивающего сервера SMB, даже если вы занимаетесь только извлечением ресурсов.

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

Благодарности

Особая благодарность следующим лицам:

  • Майк Ф. Роббинс, чьи посты об использовании SMB для DSC помогли составить основу для этой темы. Его блог находится по адресу Mike F Robbins.
  • Сергей Николайчик, автор модуля cNtfsAccessControl . Исходный код для этого модуля находится по адресу cNtfsAccessControl.

См. также

Обзор конфигурации требуемого состояния Windows PowerShell

Ввод в действие конфигураций

Настройка опрашивающего клиента с помощью идентификатора конфигурации