Share via


Configurando um servidor de pull de SMB para DSC

Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0

Importante

O Servidor de Recepção (Recurso do Windows Serviço DSC) é um componente compatível com o Windows Server, no entanto, não há planos de oferecer novos recursos ou funcionalidades. Gostaríamos que você soubesse que uma versão mais recente do DSC agora está em disponibilidade geral, gerenciada por um recurso de Azure Policy configuração de convidado nomeada. O serviço de configuração de convidado combina recursos de extensão de DSC, State Configuration da Automação do Azure e os recursos mais solicitados dos comentários dos clientes. A configuração de convidado também inclui suporte a computadores híbridos por meio de servidores habilitados para Arc.

Um servidor de pull do SMB é um computador que hospeda compartilhamentos de arquivo SMB que disponibilizam arquivos de configuração DSC e/ou recursos de DSC para nós de destino quando esses nós os solicitam.

Para usar um servidor de pull de SMB para DSC, você precisa:

  • Configurar um compartilhamento de arquivos SMB em um servidor executando o PowerShell 4.0 ou superior
  • Configurar um cliente executando o PowerShell 4.0 ou superior para efetuar pull desse compartilhamento SMB

Usando o recurso xSmbShare para criar um compartilhamento de arquivos SMB

Há várias maneiras para configurar um compartilhamento de arquivos SMB, mas vamos ver como você pode fazer isso usando DSC.

Instalar o recurso xSmbShare

Chame o cmdlet Install-Module para instalar o módulo xSmbShare.

Observação

Install-Module está incluído no módulo PowerShellGet, que está incluído no PowerShell 5.0. O xSmbShare contém o recurso de DSC xSmbShare, que pode ser usado para criar um compartilhamento de arquivo SMB.

Criar o diretório e o compartilhamento de arquivos

A configuração a seguir usa o recurso File para criar o diretório para o compartilhamento e o recurso xSmbShare para configurar o compartilhamento 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'
        }
    }
}

A configuração cria o diretório C:\DscSmbShare se ele ainda não existe e, em seguida, usa esse diretório como um compartilhamento de arquivo SMB. FullAccess deve ser concedido a qualquer conta que precisar gravar ou excluir do compartilhamento de arquivo. ReadAccess deve ser concedido a todos os nós de cliente que obtêm configurações e/ou recursos de DSC do compartilhamento.

Observação

A DSC é executada como a conta do sistema por padrão, de modo que o próprio computador deve ter acesso ao compartilhamento.

Conceder acesso ao sistema de arquivos para o cliente de pull

Conceder ReadAccess para um nó do cliente permite que esse nó acesse o compartilhamento SMB, mas não arquivos ou pastas dentro desse compartilhamento. Você precisa conceder explicitamente aos nós do cliente acesso à pasta e às subpastas de compartilhamento SMB. Podemos fazer isso com o DSC adicionando/usando o recurso cNtfsPermissionEntry, que está contido no módulo CNtfsAccessControl. A configuração a seguir adiciona um bloco cNtfsPermissionEntry, que concede acesso ReadAndExecute ao cliente de pull:

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

Colocando configurações e recursos

Salve todos os arquivos MOF de configuração e/ou recursos DSC que você deseja que sejam obtidos por pull do compartilhamento de pasta SMB pelos nós do cliente.

Qualquer arquivo MOF de configuração deve ser nomeado <ConfigurationID>.mof, em que <ConfigurationID> é o valor da propriedade ConfigurationID do LCM do nó de destino. Para obter mais informações sobre como configurar clientes de pull, confira Configurando um cliente de pull usando uma ID de configuração.

Observação

Você deverá usar IDs de configuração se estiver usando um servidor de pull de SMB. Não há suporte para nomes de configuração para SMB.

Cada módulo de recurso precisa ser compactado e nomeado de acordo com o seguinte padrão {Module Name}_{Module Version}.zip. Por exemplo, um módulo chamado xWebAdminstration com uma versão do módulo correspondente a 3.1.2.0 seria nomeado xWebAdministration_3.2.1.0.zip. Cada versão de um módulo deve estar contido em um único arquivo zip. Não há suporte para versões separadas de um módulo em um arquivo zip. Antes de empacotar módulos de recursos de DSC para uso com o servidor de pull, você precisará fazer uma pequena alteração na estrutura de diretórios.

O formato padrão de módulos contendo recursos DSC no WMF 5.0 é {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Antes de empacotar o servidor de pull, simplesmente remova a pasta {Module version} para que o caminho se torne {Module Folder}\DscResources\{DSC Resource Folder}\. Com essa alteração, compacte a pasta conforme descrito acima e coloque esses arquivos zip na pasta de compartilhamento SMB.

Criando a soma de verificação de MOF

Um arquivo MOF de configuração precisa ser emparelhado com um arquivo de soma de verificação para que um LCM em um nó de destino possa validar a configuração. Para criar uma soma de verificação, chame o cmdlet New-DSCCheckSum. O cmdlet usa um parâmetro Path que especifica a pasta na qual se encontra o MOF de configuração. O cmdlet cria um arquivo de soma de verificação chamado ConfigurationMOFName.mof.checksum, em que ConfigurationMOFName é o nome do arquivo MOF de configuração. Se houver mais de um arquivo MOF de configuração na pasta especificada, será criada uma soma de verificação para cada configuração na pasta.

O arquivo de soma de verificação deve estar presente no mesmo diretório em que o arquivo MOF de configuração ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration por padrão) e ter o mesmo nome com a extensão .checksum anexada.

Observação

Se alterar o arquivo MOF de configuração de qualquer forma, você também deverá recriar o arquivo de soma de verificação.

Configurando um cliente de pull para SMB

Para configurar um cliente que recebe as configurações e/ou recursos de um compartilhamento SMB, você configura o LCM (Gerenciador de Configurações Local) do cliente com blocos ConfigurationRepositoryShare e ResourceRepositoryShare que especificam o compartilhamento do qual efetuar o configurações de pull e recursos DSC.

Para obter mais informações sobre como configurar um LCM, consulte Configurando um cliente de pull usando a ID de configuração.

Observação

Para simplificar, este exemplo usa o PSDscAllowPlainTextPassword para permitir a passagem de uma senha de texto não criptografado para o parâmetro Credencial. Para obter informações sobre como passar credenciais de forma mais segura, consulte Opções de Credenciais nos Dados de Configuração. Você DEVE especificar uma ConfigurationID no bloco Configurações de uma metaconfiguração de um servidor de pull de SMB, mesmo que só esteja extraindo recursos.

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

Confirmações

Agradecimentos especiais às pessoas a seguir:

  • Mike F. Robbins, cujas postagens sobre o uso de SMB para DSC ajudaram a informar o conteúdo deste tópico. Seu blog está em Mike F Robbins.
  • Serge Nikalaichyk, que criou o módulo cNtfsAccessControl. A fonte para esse módulo está em cNtfsAccessControl.

Confira também

Visão geral da Desired State Configuration do Windows PowerShell

Aplicando configurações

Configurando um cliente de pull usando uma ID de configuração