Partilhar via


Configurar um servidor de solicitação SMB de DSC

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

Importante

O Servidor pull (Windows Feature DSC-Service) é um componente suportado do Windows Server. No entanto, não existem planos para oferecer novas funcionalidades ou capacidades. Gostaríamos que soubesse que está agora disponível uma versão mais recente do DSC, gerida por uma funcionalidade de Azure Policy com o nome configuração de convidado. O serviço de configuração de convidado combina as funcionalidades da Extensão DSC, Automatização do Azure State Configuration e as funcionalidades mais frequentemente pedidas do feedback dos clientes. A configuração de convidado também inclui suporte de máquina híbrida através de servidores compatíveis com o Arc.

Um servidor de extração SMB DSC é um computador que aloja partilhas de ficheiros SMB que disponibilizam ficheiros de configuração DSC e recursos DSC para nós de destino quando esses nós os pedem.

Para utilizar um servidor de extração SMB para DSC, tem de:

  • Configurar uma partilha de ficheiros SMB num servidor com o PowerShell 4.0 ou superior
  • Configurar um cliente com o PowerShell 4.0 ou superior para solicitar a partir dessa partilha SMB

Utilizar o recurso xSmbShare para criar uma partilha de ficheiros SMB

Existem várias formas de configurar uma partilha de ficheiros SMB, mas vamos ver como pode fazê-lo com o DSC.

Instalar o recurso xSmbShare

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

Nota

Install-Module está incluído no módulo PowerShellGet , que está incluído no PowerShell 5.0. O xSmbShare contém o recurso XSmbShare do DSC, que pode ser utilizado para criar uma partilha de ficheiros SMB.

Criar o diretório e a partilha de ficheiros

A seguinte configuração utiliza o recurso Ficheiro para criar o diretório para a partilha e o recurso xSmbShare para configurar a partilha 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 ainda não existir e, em seguida, utiliza esse diretório como uma partilha de ficheiros SMB. O FullAccess deve ser atribuído a qualquer conta que precise de escrever ou eliminar da partilha de ficheiros. O ReadAccess tem de ser atribuído a todos os nós de cliente que obtenham configurações e/ou recursos DSC da partilha.

Nota

O DSC é executado como a conta de sistema por predefinição, pelo que o próprio computador tem de ter acesso à partilha.

Conceder acesso ao sistema de ficheiros ao cliente pull

Dar ReadAccess a um nó de cliente permite que esse nó aceda à partilha SMB, mas não a ficheiros ou pastas nessa partilha. Tem de conceder explicitamente aos nós de cliente acesso à pasta e subpastas da partilha SMB. Podemos fazê-lo com o DSC ao adicionar com o recurso cNtfsPermissionEntry , que está contido no módulo CNtfsAccessControl . A seguinte configuração adiciona um bloco cNtfsPermissionEntry que concede acesso ReadAndExecute ao cliente 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'
        }
    }
}

Colocar configurações e recursos

Guarde quaisquer ficheiros MOF de configuração e/ou recursos DSC que pretenda que os nós de cliente solicitem na pasta de partilha SMB.

Qualquer ficheiro MOF de configuração tem de ter o nome <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 pull, veja Configurar um cliente pull com o ID de configuração.

Nota

Tem de utilizar IDs de configuração se estiver a utilizar um servidor de solicitação SMB. Os nomes de configuração não são suportados para SMB.

Cada módulo de recursos tem de ser zipado e nomeado de acordo com o seguinte padrão {Module Name}_{Module Version}.zip. Por exemplo, um módulo com o nome xWebAdminstration com uma versão de módulo 3.1.2.0 teria o nome xWebAdministration_3.2.1.0.zip. Cada versão de um módulo tem de estar contida num único ficheiro zip. As versões separadas de um módulo num ficheiro zip não são suportadas. Antes de empacotar os módulos de recursos do DSC para utilização com o servidor de extração, tem de fazer uma pequena alteração à estrutura do diretório.

O formato predefinido dos módulos que contêm o recurso DSC no WMF 5.0 é {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\.

Antes de empacotar para o servidor de extração, basta remover a {Module version} pasta para que o caminho se torne {Module Folder}\DscResources\{DSC Resource Folder}\. Com esta alteração, zipe a pasta conforme descrito acima e coloque estes ficheiros zip na pasta de partilha SMB.

Criar a soma de verificação do MOF

Um ficheiro MOF de configuração tem de ser emparelhado com um ficheiro de soma de verificação para que um LCM num nó de destino possa validar a configuração. Para criar uma soma de verificação, chame o cmdlet New-DSCCheckSum . O cmdlet utiliza um Path parâmetro que especifica a pasta onde o MOF de configuração está localizado. O cmdlet cria um ficheiro de soma de verificação com o nome ConfigurationMOFName.mof.checksum, em ConfigurationMOFName que é o nome do ficheiro mof de configuração. Se existirem mais do que um ficheiro MOF de configuração na pasta especificada, é criada uma soma de verificação para cada configuração na pasta.

O ficheiro checksum tem de estar presente no mesmo diretório que o ficheiro MOF de configuração ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration por predefinição) e ter o mesmo nome com a .checksum extensão anexada.

Nota

Se alterar o ficheiro MOF de configuração de alguma forma, também tem de recriar o ficheiro de soma de verificação.

Configurar um cliente pull para SMB

Para configurar um cliente que extraia configurações e/ou recursos de uma partilha SMB, configure o Configuration Manager Local (LCM) do cliente com os blocos ConfigurationRepositoryShare e ResourceRepositoryShare que especificam a partilha a partir da qual pretende solicitar configurações e recursos DSC.

Para obter mais informações sobre como configurar o LCM, veja Configurar um cliente pull com o ID de configuração.

Nota

Para simplificar, este exemplo utiliza pSDscAllowPlainTextPassword para permitir a transmissão de uma palavra-passe de texto simples para o parâmetro Credential . Para obter informações sobre como transmitir credenciais de forma mais segura, veja Opções de Credenciais em Dados de Configuração. Tem de especificar um ConfigurationID no bloco Definições de uma metaconfiguração para um servidor de extração SMB, mesmo que esteja apenas a solicitar 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
        })
}

Agradecimentos

Agradecimentos especiais aos seguintes indivíduos:

  • Mike F. Robbins, cujas publicações sobre a utilização do SMB para DSC ajudaram a informar o conteúdo neste tópico. O blog dele está no Mike F Robbins.
  • Serge Nikalaichyk, autor do módulo cNtfsAccessControl . A origem deste módulo está em cNtfsAccessControl.

Ver também

Descrição Geral do Windows PowerShell Desired State Configuration

Aplicar configurações

Configurar um cliente de solicitação através de IDs de configuração