Já descrevemos como descrever a configuração no DSC (Desired State Configuration) e desmontamos o agente LCM (Local Configuration Manager) interno para aplicar a configuração no servidor. Na primeira parte do artigo, caminhamos passo a passo sobre os principais recursos da ferramenta, juntamente com Evgeny Parfenov, da DataLine .Aqui, abordamos as configurações e os recursos nos modos Push e Pull.
O que diremos:
- Diferenças entre os modos Push e Pull
- Modo push em detalhes
- Modo de puxar em detalhes
Diferenças entre os modos Push e Pull
No modo Push, iniciamos manualmente ou por script o processo de aplicação de alterações no servidor (local ou remotamente). O Gerenciador de configuração local (LCM) aplica a configuração interativamente.No modo Pull, o agente LCM agendado no servidor compara sua configuração com a configuração publicada no repositório de configuração compartilhado. Se houver alterações, a configuração é copiada localmente e aplicada.Os prós e os contras de ambos os modos de operação são bastante óbvios.A configuração de recursos também é um pouco diferente para modos diferentes. Como lembramos, para usar um recurso, você precisa instalá-lo localmente e no servidor.No caso de usar o modo Push, o administrador deve primeiro instalar todos os recursos necessários no servidor gerenciado e no PC, de onde a configuração será enviada.No modo Pull, o agente DSC no servidor gerenciado pode instalar independentemente todos os recursos necessários a partir do servidor Pull; a tarefa do administrador é colocá-los no servidor Pull. No entanto, lembramos que é impossível prever a aplicação da configuração no modo Pull, pois o GPO não é uma entrega garantida de configurações.Modo push em detalhes
O processo de nível superior de gravação e aplicação de configurações DSC pode ser representado da seguinte forma: No primeiro estágio ( Autoria ), descrevemos a configuração usando qualquer IDE que seja conveniente para nós (Bloco de Notas, PowerShell ISE, Código do Visual Studio e outros). Após a conclusão, compilamos os arquivos de configuração mof (o processo de compilação é descrito em nosso artigo anterior ).No segundo estágio ( armazenamento temporário / compilação ), começamos a aplicar a configuração do arquivo mof compilado usando o cmdlet Start-DSCConfiguration . No processo, o servidor de gerenciamento transmite o arquivo .mof do servidor LCM, que deve aplicar a configuração.Nesse caso, é melhor usar a opção -Verbose. Para controle completo do processo de configuração:PS C:\windows\system32> Start-DscConfiguration -Path C:\EnvironmentVariable_Path\ -Wait -Verbose
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' =
SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer COMPUTER with user sid
S-1-5-21-SID.
VERBOSE: [COMPUTER]: LCM: [ Start Set ]
VERBOSE: [COMPUTER]: LCM: [ Start Resource ] [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: LCM: [ Start Test ] [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' does not exist.
VERBOSE: [COMPUTER]: LCM: [ End Test ] [[Environment]CreatePathEnvironmentVariable] in 0.1320 seconds.
VERBOSE: [COMPUTER]: LCM: [ Start Set ] [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' created with value 'TestValue'.
VERBOSE: [COMPUTER]: LCM: [ End Set ] [[Environment]CreatePathEnvironmentVariable] in 0.0690 seconds.
VERBOSE: [COMPUTER]: LCM: [ End Resource ] [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: LCM: [ End Set ]
VERBOSE: [COMPUTER]: LCM: [ End Set ] in 2.1900 seconds.
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 2.749 seconds
Pode-se observar que o mecanismo verificou a presença da variável, não a encontrou e criou uma nova, de acordo com a configuração especificada:
Na terceira etapa ( Execução ), o agente DSC LCM entra no jogo. Ele recebe um arquivo mof, verifica, coloca-o em uma pasta $env:systemRoot/system32/configuration
e inicia um fluxo de trabalho de aplicação do arquivo de configuração:- LCM recebe, aplica o arquivo de configuração. O arquivo é renomeado para pending.mof e colocado em
$env:systemRoot/system32/configuration
- Se o aplicativo do arquivo de configuração falhar, o arquivo pending.mof permanecerá e o LCM tentará aplicá-lo no próximo ciclo.
- Se o arquivo current.mof já estiver na pasta, ele será renomeado para previous.mof
- Se o aplicativo do arquivo de configuração for concluído com êxito, o LCM o renomeia para current.mof
- O arquivo current.mof é copiado para o arquivo backup.mof
Graficamente, o fluxo de trabalho pode ser representado da seguinte maneira:
Para gerenciar arquivos de configuração diferentes, existe um cmdlet Remove-DSCConfigurationDocument que permite excluir documentos específicos, se necessário por algum motivo. No entanto, nada nos impede de removê-los manualmente.Modo de puxar em detalhes
O modo pull é mais difícil de implantar e configurar, mas simplifica bastante o processo de gerenciamento de servidores conectados a ele.O esquema geral será mais ou menos assim: o
modo Pull requer a implantação de um servidor Pull. Na verdade, é um servidor da Web comum, que pode fornecer aos clientes arquivos e recursos mof que podem ser necessários ao aplicar configurações de arquivos mof. Este último simplifica bastante o processo de gerenciamento e configuração de servidores, pois a tarefa de fornecer os recursos necessários recai sobre o cliente. O servidor Pull atua ao mesmo tempo como repositório \ repositório de recursos.O servidor pull pode fornecer acesso a recursos e arquivos de configuração por meio de dois protocolos:- SMB. . DFS-R. , , . SMB , Kerberos.
- Http\https. . IIS.
A instalação do servidor pull pode ser feita através dos recursos regulares que a equipe de desenvolvimento do DSC oferece. Mais detalhes podem ser encontrados aqui . Ou use soluções orientadas pela comunidade: aqui ou aqui .O fluxo de trabalho para trabalho adicional com o servidor pull é o seguinte:- Configuramos os clientes (LCM) para trabalhar com um servidor pull.
- Carregar arquivos de recursos para o servidor pull.
- Preparamos arquivos de configuração do cliente (gravação e compilação) e arquivos com somas de verificação.
- Aprecie o resultado.
Configurando Clientes (LCM) para Trabalhar com um Servidor Pull
Para fazer isso, use as seguintes configurações do LocalConfigurationManager (v5) :Bloco de configurações:- CertificateID - indica a impressão digital do certificado para proteger logins / senhas transmitidas na configuração.
- ID da configuração - contém o GUID do cliente. Somente as configurações que contêm seu GUID no nome do arquivo de configuração serão aplicadas ao cliente. A configuração é deixada para compatibilidade com versões mais antigas do servidor pull. É melhor usar a configuração RegistrationKey.
- RefreshMode - para trabalhar com servidores Pull, especifique Pull nesta configuração.
Bloco ConfigurationRepositoryWeb:- AllowUnsecureConnection - permitir \ não permitir conexão sem autenticação.
- CertificateID - indica a impressão digital do certificado no cliente, que será usada no processo de autenticação mútua com o servidor.
- ConfigurationNames - uma matriz de nomes de configuração que serão aplicados ao cliente.
- RegistrationKey - um segredo gerado no servidor, usado pelo cliente para se registrar no servidor.
- ServerURL - URL do servidor Pull com configurações.
Bloco ResourceRepositoryWeb:- AllowUnsecureConnection - permitir \ não permitir conexão sem autenticação.
- CertificateID - indica a impressão digital do certificado no cliente, que será usada no processo de autenticação mútua com o servidor.
- RegistrationKey - um segredo gerado no servidor, usado pelo cliente para se registrar no servidor.
- ServerURL - URL do servidor Pull com recursos.
Bloco ReportServerWeb:- AllowUnsecureConnection - permitir \ não permitir conexão sem autenticação.
- CertificateID - indica a impressão digital do certificado no cliente, que será usada no processo de autenticação mútua com o servidor.
- RegistrationKey - um segredo gerado no servidor, usado pelo cliente para se registrar no servidor.
- ServerURL - URL do servidor Pull com relatórios.
Fazendo Upload de Arquivos de Recursos para o Servidor Pull
Depois de aplicar as novas configurações no LCM, que o ensinará a usar o servidor Pull, você poderá fazer upload de arquivos de recursos para o servidor . Os recursos são carregados no servidor na forma de arquivos zip (a pasta com o recurso é compactada em zip). Regra para nomear esse arquivo:{ModuleName}_{Version}.zip
O local do arquivo padrão $env:PROGRAMFILES\WindowsPowerShell\DscService\Modules
. Ao instalar o servidor Pull, essa pasta pode ser redefinida. Além do arquivo com a pasta do recurso compactada em zip, você também deve colocar o arquivo com a soma de verificação desse recurso compactado no mesmo local. Por exemplo, assim:New-DscChecksum -Path .\xPSDesiredStateConfiguration_8.4.4.0.zip
Colocando Arquivos de Configuração do Cliente no Servidor Pull
É importante observar aqui que podemos usar dois modos de operação do cliente nesse caso (na verdade dois e meio): o cliente do servidor receberá a configuração usando o ConfigurationID ou o cliente usará o nome da configuração - ConfigurationName . Se for necessário aplicar várias configurações, todas elas poderão ser especificadas no Nome da Configuração, mas você precisará configurar o LCM para trabalhar com configurações parciais.Ao usar o ConfigurationID, é preciso enfatizar que o arquivo de configuração mof que será aplicado ao cliente conterá um GUID (ele está contido no ConfigurationID). No caso de usar o ConfigurationName, o arquivo mof conterá o nome da configuração, que especificaremos em ConfigurationName. Nos dois casos, além do arquivo mof, o arquivo de soma de verificação de configuração também será colocado lá:New-DscChecksum -Path '.\' -Force
Em conclusão
Examinamos duas maneiras de aplicar alterações ao servidor nos modos Push e Pull. Examinamos os recursos de uso e tentamos explicar todas as nuances que podem surgir ao trabalhar com esses modos no DSC. Se você ainda tiver dúvidas, vamos discutir nos comentários. E se você não teve visibilidade suficiente, venha para a nossa reunião on-line em 28 de maio: analisaremos os sistemas de comunicações unificadas e recursos de comunicação (configurando o upload de logs do Exchange no Elastic, Microsoft Endpoint Manager para gerenciar iOS, Android e Windows 10) e falaremos com mais detalhes sobre os limites de aplicabilidade Configuração de estado desejado do PowerShell. Você só precisa se registrar .