Práticas recomendadas do servidor de pullPull server best practices

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

Resumo: este documento destina-se a incluir processo e extensibilidade para ajudar os engenheiros que estão se preparando para a solução.Summary: This document is intended to include process and extensibility to assist engineers who are preparing for the solution. Os detalhes devem fornecer as práticas recomendadas, como identificadas por clientes e, em seguida, validadas pela equipe de produto para garantir que as recomendações sejam voltadas para o futuro e consideradas estáveis.Details should provide best practices as identified by customers and then validated by the product team to ensure recommendations are future facing and considered stable.

Informações do documentoDoc Info
AutorAuthor Michael GreeneMichael Greene
RevisoresReviewers Ben Gelens, Ravikanth Chaganti, Aleksandar NikolicBen Gelens, Ravikanth Chaganti, Aleksandar Nikolic
PublicadoPublished Abril de 2015April, 2015

ResumoAbstract

Este documento foi criado para fornecer diretrizes oficiais para qualquer pessoa que esteja planejando uma implementação de um servidor de pull de Configuração de Estado Desejado do Windows PowerShell.This document is designed to provide official guidance for anyone planning for a Windows PowerShell Desired State Configuration pull server implementation. Um servidor de pull é um serviço simples que deve levar apenas alguns minutos para implantar.A pull server is a simple service that should take only minutes to deploy. Embora ofereça diretrizes técnicas passo a passo que podem ser usadas em uma implantação, o valor desse documento está em servir como uma referência para as práticas recomendadas e no que se deve refletir antes da implantação.Although this document will offer technical how-to guidance that can be used in a deployment, the value of this document is as a reference for best practices and what to think about before deploying. Os leitores devem ter uma familiaridade básica com o DSC e com os termos usados para descrever os componentes que estão incluídos em uma implantação de DSC.Readers should have basic familiarity with DSC, and the terms used to describe the components that are included in a DSC deployment. Para obter mais informações, consulte o tópico Visão Geral da Configuração de Estado Desejado do Windows PowerShell.For more information, see the Windows PowerShell Desired State Configuration Overview topic. Como é esperado que o DSC evolua em uma cadência de nuvem, espera-se também que a tecnologia subjacente, incluindo o servidor de pull, evolua e introduza novos recursos.As DSC is expected to evolve at cloud cadence, the underlying technology including pull server is also expected to evolve and to introduce new capabilities. Este documento inclui uma tabela de versão no apêndice que fornece referências a versões anteriores e referências a soluções futuras para incentivar designs inovadores.This document includes a version table in the appendix that provides references to previous releases and references to future looking solutions to encourage forward-looking designs.

As duas seções principais deste documento:The two major sections of this document:

  • Planejamento de ConfiguraçãoConfiguration Planning
  • Guia de instalaçãoInstallation Guide

Versões do Windows Management FrameworkVersions of the Windows Management Framework

As informações neste documento destinam-se ao Windows Management Framework 5.0.The information in this document is intended to apply to Windows Management Framework 5.0. Embora o WMF 5.0 não seja necessário para a implantação e operação de um servidor de pull, o foco deste documento é a versão 5.0.While WMF 5.0 is not required for deploying and operating a pull server, version 5.0 is the focus of this document.

Configuração do Estado Desejado do Windows PowerShellWindows PowerShell Desired State Configuration

A DSC (Configuração do Estado Desejado) é uma plataforma de gerenciamento que habilita a implantação e gerenciamento de dados de configuração, usando uma sintaxe do setor chamada de MOF (Managed Object Format) para descrever o CIM (modelo CIM).Desired State Configuration (DSC) is a management platform that enables deploying and managing configuration data by using an industry syntax named the Managed Object Format (MOF) to describe the Common Information Model (CIM). Existe um projeto de software livre, o OMI (Open Management Infrastructure), para promover o desenvolvimento desses padrões entre plataformas, incluindo Linux e sistemas operacionais de hardware de rede.An open source project, Open Management Infrastructure (OMI), exists to further development of these standards across platforms including Linux and network hardware operating systems. Para obter mais informações, consulte a página DMTF com vínculo para as especificações de MOF e Documentos e Fonte do OMI.For more information, see the DMTF page linking to MOF specifications, and OMI Documents and Source.

O Windows PowerShell fornece um conjunto de extensões de linguagem para a Configuração de Estado Desejado que podem ser usadas para criar e gerenciar configurações declarativas.Windows PowerShell provides a set of language extensions for Desired State Configuration that you can use to create and manage declarative configurations.

Função de servidor de pullPull server role

Um servidor de pull oferece um serviço centralizado para armazenar configurações que estarão acessíveis aos nós de destino.A pull server provides a centralized service to store configurations that will be accessible to target nodes.

A função de servidor de pull pode ser implantada como uma instância de servidor Web ou um compartilhamento de arquivos SMB.The pull server role can be deployed as either a Web Server instance or an SMB file share. A capacidade de servidor Web inclui uma interface de OData e, opcionalmente, pode incluir recursos para que os nós de destino reportem a confirmação de êxito ou de falha conforme as configurações são aplicadas.The web server capability includes an OData interface and can optionally include capabilities for target nodes to report back confirmation of success or failure as configurations are applied. Essa funcionalidade é útil em ambientes em que há um grande número de nós de destino.This functionality is useful in environments where there are a large number of target nodes. Depois de configurar um nó de destino (também conhecido como um cliente) para apontar para o servidor de pull, os dados de configuração mais recentes e os scripts necessários são baixados e aplicados.After configuring a target node (also referred to as a client) to point to the pull server the latest configuration data and any required scripts are downloaded and applied. Isso pode ser feito como uma implantação única ou como um trabalho recorrente, o que também torna o servidor de pull um ativo importante para o gerenciamento de alteração em grande escala.This can happen as a one-time deployment or as a re-occurring job which also makes the pull server an important asset for managing change at scale. Para obter mais informações, consulte Servidores de Pull de Configuração de Estado Desejado do Windows PowerShell e Modos de Configuração de Push e Pull.For more information, see Windows PowerShell Desired State Configuration Pull Servers and Push and Pull Configuration Modes.

Planejamento de configuraçãoConfiguration planning

Para qualquer implantação de software empresarial há informações que podem ser coletadas com antecedência para ajudar a planejar a arquitetura correta e se preparar para as etapas necessárias para concluir a implantação.For any enterprise software deployment there is information that can be collected in advance to help plan for the correct architecture and to be prepared for the steps required to complete the deployment. As seções a seguir fornecem informações sobre como se preparar e as conexões organizacionais que provavelmente precisarão acontecer com antecedência.The following sections provide information regarding how to prepare and the organizational connections that will likely need to happen in advance.

Requisitos de softwareSoftware requirements

A implantação de um servidor de pull requer o recurso de Serviço DSC do Windows Server.Deployment of a pull server requires the DSC Service feature of Windows Server. Esse recurso foi introduzido no Windows Server 2012 e foi atualizado por meio das versões em andamento do WMF (Windows Management Framework).This feature was introduced in Windows Server 2012, and has been updated through ongoing releases of Windows Management Framework (WMF).

Downloads de softwareSoftware downloads

Além de instalar o conteúdo mais recente do Windows Update, há dois downloads que são considerados como práticas recomendadas para implantar um servidor de pull de DSC: a versão mais recente do Windows Management Framework e um módulo de DSC para automatizar o provisionamento do servidor de pull.In addition to installing the latest content from Windows Update, there are two downloads considered best practice to deploy a DSC pull server: The latest version of Windows Management Framework, and a DSC module to automate pull server provisioning.

WINDOWS MANAGEMENT FRAMEWORKWMF

O Windows Server 2012 R2 inclui um recurso chamado de serviço DSC.Windows Server 2012 R2 includes a feature named the DSC Service. O recurso de serviço DSC fornece a funcionalidade do servidor de pull, incluindo os binários que oferecem suporte ao ponto de extremidade OData.The DSC Service feature provides the pull server functionality, including the binaries that support the OData endpoint. O WMF está incluído no Windows Server e é atualizado em uma cadência ágil entre as versões do Windows Server.WMF is included in Windows Server and is updated on an agile cadence between Windows Server releases. Novas versões do WMF 5.0 podem incluir atualizações do recurso de Serviço DSC.New versions of WMF 5.0 can include updates to the DSC Service feature. Por esse motivo, é uma prática recomendada baixar a versão mais recente do WMF e examinar as notas de versão para determinar se a versão inclui uma atualização do recurso de serviço DSC.For this reason, it is a best practice to download the latest release of WMF and to review the release notes to determine if the release includes an update to the DSC service feature. Também é necessário examinar a seção das notas de versão que indica se o status de design para uma atualização ou cenário está listado como estável ou experimental.You should also review the section of the release notes that indicates whether the design status for an update or scenario is listed as stable or experimental. Para permitir um ciclo de lançamento ágil, recursos individuais podem ser declarados estáveis, o que indica que o recurso está pronto para ser usado em um ambiente de produção ainda que o WMF esteja lançado como visualização.To allow for an agile release cycle, individual features can be declared stable, which indicates the feature is ready to be used in a production environment even while WMF is released in preview. Outros recursos que têm sido historicamente atualizados por versões do WMF (consulte as Notas de Versão do WMF para obter mais detalhes):Other features that have historically been updated by WMF releases (see the WMF Release Notes for further detail):

  • Windows PowerShell, ISE (Ambiente de Script Integrado) do Windows PowerShellWindows PowerShell Windows PowerShell Integrated Scripting
  • Serviços Web do Windows PowerShell (Extensão do IIS do Management OData)Environment (ISE) Windows PowerShell Web Services (Management OData
  • DSC (Configuração de Estado Desejado) do Windows PowerShellIIS Extension) Windows PowerShell Desired State Configuration (DSC)
  • WinRM (Gerenciamento Remoto do Windows) WMI (Instrumentação de Gerenciamento do Windows)Windows Remote Management (WinRM) Windows Management Instrumentation (WMI)

Recurso DSCDSC resource

Uma implantação de servidor de pull pode ser simplificada através do provisionamento do serviço com o uso de um script de configuração DSC.A pull server deployment can be simplified by provisioning the service using a DSC configuration script. Este documento inclui scripts de configuração que podem ser usados para implantar um nó de servidor pronto para produção.This document includes configuration scripts that can be used to deploy a production ready server node. Para usar os scripts de configuração, é necessário um módulo de DSC que não está incluído no Windows Server.To use the configuration scripts, a DSC module is required that is not included in Windows Server. O nome do módulo necessário é xPSDesiredStateConfiguration, que inclui o recurso de DSC xDscWebService.The required module name is xPSDesiredStateConfiguration, which includes the DSC resource xDscWebService. O módulo xPSDesiredStateConfiguration pode ser baixado aqui.The xPSDesiredStateConfiguration module can be downloaded here.

Use o cmdlet Install-Module do módulo PowerShellGet.Use the Install-Module cmdlet from the PowerShellGet module.

Install-Module xPSDesiredStateConfiguration

O módulo PowerShellGet baixará o módulo em:The PowerShellGet module will download the module to:

C:\Program Files\Windows PowerShell\Modules

Tarefa de planejamentoPlanning task
Você tem acesso aos arquivos de instalação do Windows Server 2012 R2?Do you have access to the installation files for Windows Server 2012 R2?
O ambiente de implantação terá acesso à Internet para baixar o módulo e o WMF da galeria online?Will the deployment environment have Internet access to download WMF and the module from the online gallery?
Como você instalará as atualizações mais recentes de segurança depois de instalar o sistema operacional?How will you install the latest security updates after installing the operating system?
O ambiente terá acesso à Internet para obter atualizações ou terá um servidor local do WSUS (Windows Server Update Services)?Will the environment have Internet access to obtain updates, or will it have a local Windows Server Update Services (WSUS) server?
Você tem acesso aos arquivos de instalação do Windows Server que já contêm atualizações por meio de injeção offline?Do you have access to Windows Server installation files that already include updates through offline injection?

Requisitos de hardwareHardware requirements

As implantações de servidor de pull têm suporte em servidores físicos e virtuais.Pull server deployments are supported on both physical and virtual servers. Os requisitos de dimensionamento para o servidor de pull estão alinhados com os requisitos do Windows Server 2012 R2.The sizing requirements for pull server align with the requirements for Windows Server 2012 R2.

CPU: processador de 1,4 GHz e 64 bitsCPU: 1.4 GHz 64-bit processor
Memória: 512 MBMemory: 512 MB
Espaço em disco: 32 GBDisk Space: 32 GB
Rede: Adaptador Gigabit EthernetNetwork: Gigabit Ethernet Adapter

Tarefa de planejamentoPlanning task
Você implantará em hardware físico ou em uma plataforma de virtualização?Will you deploy on physical hardware or on a virtualization platform?
Qual é o processo de solicitação de um novo servidor para seu ambiente de destino?What is the process to request a new server for your target environment?
Qual é o tempo médio de resposta para que um servidor fique disponível?What is the average turnaround time for a server to become available?
Qual tamanho de servidor você solicitará?What size server will you request?

ContasAccounts

Não há nenhum requisito de conta de serviço para implantar uma instância de servidor de pull.There are no service account requirements to deploy a pull server instance. No entanto, há situações em que o site pode ser executado em um contexto de uma conta de usuário local.However, there are scenarios where the website could run in the context of a local user account. Por exemplo, se houver a necessidade de acessar um compartilhamento de armazenamento de conteúdo do site e o Windows Server ou o dispositivo que hospeda o compartilhamento de armazenamento não estiverem associados ao domínio.For example, if there is a need to access a storage share for website content and either the Windows Server or the device hosting the storage share are not domain joined.

Registros DNSDNS records

Será necessário um nome do servidor para ser usado durante a configuração de clientes para trabalhar com um ambiente de servidor de pull.You will need a server name to use when configuring clients to work with a pull server environment. Em ambientes de teste, normalmente será usado o nome do host do servidor ou poderá ser usado o endereço IP para o servidor se a resolução de nomes DNS não estiver disponível.In test environments, typically the server hostname is used, or the IP address for the server can be used if DNS name resolution is not available. Em ambientes de produção ou em um ambiente de laboratório que pretende representar uma implantação de produção, a prática recomendada é criar um registro DNS CNAME.In production environments or in a lab environment that is intended to represent a production deployment, the best practice is to create a DNS CNAME record.

Um DNS CNAME permite a criação de um alias para se referir ao seu registro de host (A).A DNS CNAME allows you to create an alias to refer to your host (A) record. O objetivo do registro de nome adicional é o aumento da flexibilidade, caso uma alteração seja necessária no futuro.The intent of the additional name record is to increase flexibility should a change be required in the future. Um CNAME pode ajudar a isolar a configuração do cliente de maneira que as alterações no ambiente de servidor, como a substituição de um servidor de pull ou adição de servidores de pull, não exijam uma alteração correspondente na configuração do cliente.A CNAME can help to isolate the client configuration so that changes to the server environment, such as replacing a pull server or adding additional pull servers, will not require a corresponding change to the client configuration.

Ao escolher um nome para o registro DNS, lembre-se da arquitetura da solução.When choosing a name for the DNS record, keep the solution architecture in mind. Se estiver usando o balanceamento de carga, o certificado usado para proteger o tráfego por meio de HTTPS precisará compartilhar o mesmo nome do registro DNS.If using load balancing, the certificate used to secure traffic over HTTPS will need to share the same name as the DNS record.

CenárioScenario Prática recomendadaBest Practice
Ambiente de TesteTest Environment Reproduzir o ambiente de produção planejado, se possível.Reproduce the planned production environment, if possible. Um nome do host do servidor é adequado para configurações simples.A server hostname is suitable for simple configurations. Se o DNS não estiver disponível, um endereço IP poderá ser usado no lugar do nome do host.If DNS is not available, an IP address may be used in lieu of a hostname.
Implantação de Nó únicoSingle Node Deployment Criar um registro DNS CNAME que aponta para o nome do host do servidor.Create a DNS CNAME record that points to the server hostname.

Para obter mais informações, consulte Configuração de Round Robin de DNS no Windows Server.For more information, see Configuring DNS Round Robin in Windows Server.

Tarefa de planejamentoPlanning task
Você sabe quem contatar para que os registros DNS sejam criados e alterados?Do you know who to contact to have DNS records created and changed?
Qual é o tempo médio de resposta para uma solicitação de um registro DNS?What is the average turnaround for a request for a DNS record?
Você precisa solicitar registros de nome do host (A) estáticos para servidores?Do you need to request static Hostname (A) records for servers?
O que você solicitará como um CNAME?What will you request as a CNAME?
Se necessário, qual tipo de solução de Balanceamento de Carga você utilizará?If needed, what type of Load Balancing solution will you utilize? (consulte a seção intitulada Balanceamento de Carga para obter mais detalhes)(see section titled Load Balancing for details)

Infraestrutura de chave públicaPublic Key Infrastructure

A maioria das organizações atuais exige que o tráfego de rede, especialmente o tráfego que inclui dados confidenciais como a maneira que os servidores são configurados, seja validado e/ou criptografado durante o trânsito.Most organizations today require that network traffic, especially traffic that includes such sensitive data as how servers are configured, must be validated and/or encrypted during transit. Embora seja possível implantar um servidor de pull usando HTTP, o que facilita as solicitações de clientes em texto não criptografado, é uma prática recomendada proteger o tráfego usando HTTPS.While it is possible to deploy a pull server using HTTP which facilitates client requests in clear text, it is a best practice to secure traffic using HTTPS. O serviço pode ser configurado para usar HTTPS por meio de um conjunto de parâmetros no recurso de DSC xPSDesiredStateConfiguration.The service can be configured to use HTTPS using a set of parameters in the DSC resource xPSDesiredStateConfiguration.

Os requisitos de certificado para proteger o tráfego HTTPS do servidor de pull não são diferentes da proteção de qualquer outro site HTTPS.The certificate requirements to secure HTTPS traffic for pull server are not different than securing any other HTTPS web site. O modelo de servidor Web dos Serviços de Certificado do Windows Server satisfaz os recursos necessários.The Web Server template in a Windows Server Certificate Services satisfies the required capabilities.

Tarefa de planejamentoPlanning task
Se as solicitações de certificado não são automatizadas, quem você precisará contatar para solicitar um certificado?If certificate requests are not automated, who will you need to contact to requests a certificate?
Qual é o tempo médio de resposta para a solicitação?What is the average turnaround for the request?
Como o arquivo de certificado será transferido para você?How will the certificate file be transferred to you?
Como a chave privada do certificado será transferida para você?How will the certificate private key be transferred to you?
Qual é o tempo de expiração padrão?How long is the default expiration time?
Você estabeleceu um nome DNS para o ambiente de servidor de pull que pode ser usado para o nome do certificado?Have you settled on a DNS name for the pull server environment, that you can use for the certificate name?

Escolha de uma arquiteturaChoosing an architecture

Um servidor de pull pode ser implantado usando um serviço Web hospedado no IIS ou em um compartilhamento de arquivos SMB.A pull server can be deployed using either a web service hosted on IIS, or an SMB file share. Na maioria das situações, a opção de serviço Web fornecerá maior flexibilidade.In most situations, the web service option will provide greater flexibility. Não é incomum que o tráfego HTTPS atravesse os limites da rede, enquanto que o tráfego SMB é geralmente filtrado ou bloqueado entre redes.It is not uncommon for HTTPS traffic to traverse network boundaries, whereas SMB traffic is often filtered or blocked between networks. O serviço Web também oferece a opção de incluir um Servidor de Conformidade ou um Reporting Manager da Web (esses dois tópicos serão abordados em uma versão futura deste documento) que fornecem um mecanismo para os clientes reportarem o status a um servidor para uma visibilidade centralizada.The web service also offers the option to include a Conformance Server or Web Reporting Manager (both topics to be addressed in a future version of this document) that provide a mechanism for clients to report status back to a server for centralized visibility. O SMB fornece uma opção para ambientes em que a política determina que um servidor Web não deve ser utilizado e para outros requisitos de ambientes em que uma função de servidor Web não é desejada.SMB provides an option for environments where policy dictates that a web server should not be utilized, and for other environmental requirements that make a web server role undesirable. Em ambos os casos, lembre-se de avaliar os requisitos para assinatura e criptografia de tráfego.In either case, remember to evaluate the requirements for signing and encrypting traffic. O HTTPS, a assinatura SMB e as políticas IPSEC são opções que vale a pena considerar.HTTPS, SMB signing, and IPSEC policies are all options worth considering.

Balanceamento de cargaLoad balancing

Os clientes interagindo com o serviço Web fazem uma solicitação de informações que é retornada em uma única resposta.Clients interacting with the web service make a request for information that is returned in a single response. Não são necessárias solicitações sequenciais, portanto, não é necessário que a plataforma de balanceamento de carga garanta que as sessões sejam mantidas em um único servidor em qualquer ponto no tempo.No sequential requests are required, so it is not necessary for the load balancing platform to ensure sessions are maintained on a single server at any point in time.

Tarefa de planejamentoPlanning task
Qual solução será usada para o tráfego de balanceamento de carga entre servidores?What solution will be used for load balancing traffic across servers?
Se estiver usando um balanceador de carga de hardware, quem receberá uma solicitação para adicionar uma nova configuração ao dispositivo?If using a hardware load balancer, who will take a request to add a new configuration to the device?
Qual é o tempo médio de resposta de uma solicitação para configurar um novo serviço Web com balanceamento de carga?What is the average turnaround for a request to configure a new load balanced web service?
Quais informações serão necessárias para a solicitação?What information will be required for the request?
Você precisará solicitar um IP adicional ou a equipe responsável pelo balanceamento de carga cuidará disso?Will you need to request an additional IP or will the team responsible for load balancing handle that?
Você tem os registros DNS necessários e isso será solicitado pela equipe responsável por configurar a solução de balanceamento de carga?Do you have the DNS records needed, and will this be required by the team responsible for configuring the load balancing solution?
A solução de balanceamento de carga necessita que o PKI seja manipulado pelo dispositivo ou ele pode balancear a carga de tráfego HTTPS desde que não haja requisitos de sessão?Does the load balancing solution require that PKI be handled by the device or can it load balance HTTPS traffic as long as there are no session requirements?

Configurações e módulos de preparo no servidor de pullStaging configurations and modules on the pull server

Como parte do planejamento da configuração, será necessário pensar sobre quais módulos de DSC e configurações serão hospedadas pelo servidor de pull.As part of configuration planning, you will need to think about which DSC modules and configurations will be hosted by the pull server. Para fins de planejamento de configuração, é importante ter um entendimento básico de como preparar e implantar conteúdo em um servidor de pull.For the purpose of configuration planning it is important to have a basic understanding of how to prepare and deploy content to a pull server.

No futuro, esta seção será expandida e incluída em um Guia de Operações para Servidor de Pull da DSC.In the future, this section will be expanded and included in an Operations Guide for DSC Pull Server. O guia discutirá o processo diário do gerenciamento de módulos e das configurações ao longo do tempo, com automação.The guide will discuss the day to day process for managing modules and configurations over time with automation.

Módulos de DSCDSC modules

Os clientes que solicitam uma configuração precisarão dos módulos necessários de DSC.Clients that request a configuration will need the required DSC modules. Automatizar a distribuição por demanda dos módulos de DSC para clientes é uma funcionalidade do servidor de pull.A functionality of the pull server is to automate distribution on demand of DSC modules to clients. Se estiver implantando um servidor de pull pela primeira vez, talvez como um laboratório ou prova de conceito, você provavelmente vai depender de módulos de DSC que estão disponíveis em repositórios públicos, como a Galeria do PowerShell ou os repositórios PowerShell.org do GitHub para módulos de DSC.If you are deploying a pull server for the first time, perhaps as a lab or proof of concept, you are likely going to depend on DSC modules that are available from public repositories such as the PowerShell Gallery or the PowerShell.org GitHub repositories for DSC modules.

É importante lembrar que mesmo para as fontes confiáveis online como a Galeria do PowerShell, qualquer módulo que é baixado de um repositório público deve ser revisado por alguém com experiência com PowerShell e conhecimento sobre o ambiente em que os módulos serão usados antes de serem usados em produção.It is critical to remember that even for trusted online sources such as the PowerShell Gallery, any module that is downloaded from a public repository should be reviewed by someone with PowerShell experience and knowledge of the environment where the modules will be used prior to being used in production. Durante a conclusão dessa tarefa é um bom momento para verificar se há qualquer conteúdo adicional no módulo que pode ser removido, como documentação e scripts de exemplo.While completing this task it is a good time to check for any additional payload in the module that can be removed such as documentation and example scripts. Isso reduz a largura de banda da rede por cliente em sua primeira solicitação, quando os módulos serão baixados do servidor para o cliente através da rede.This will reduce the network bandwidth per client in their first request, when modules will be downloaded over the network from server to client.

Cada módulo deve ser empacotado em um formato específico, um arquivo ZIP denominado ModuleName_Version.zip que contém o conteúdo do módulo.Each module must be packaged in a specific format, a ZIP file named ModuleName_Version.zip that contains the module payload. Depois que o arquivo for copiado para o servidor, um arquivo de soma de verificação deve ser criado.After the file is copied to the server a checksum file must be created. Quando os clientes se conectam ao servidor, a soma de verificação é usada para verificar se o conteúdo do módulo de DSC não foi alterado desde que foi publicado.When clients connect to the server, the checksum is used to verify the content of the DSC module has not changed since it was published.

New-DscCheckSum -ConfigurationPath .\ -OutPath .\
Tarefa de planejamentoPlanning task
Se você estiver planejando um ambiente de laboratório ou de teste, quais cenários serão fundamentais para validar?If you are planning a test or lab environment which scenarios are key to validate?
Há módulos disponíveis publicamente que contêm recursos para cobrir tudo o que é necessário ou você precisará criar seus próprios recursos?Are there publicly available modules that contain resources to cover everything you need or will you need to author your own resources?
Seu ambiente terá acesso à Internet para recuperar os módulos públicos?Will your environment have Internet access to retrieve public modules?
Quem será responsável por examinar os módulos de DSC?Who will be responsible for reviewing DSC modules?
Se você estiver planejando um ambiente de produção, o que será usado como repositório local para armazenar os módulos de DSC?If you are planning a production environment what will you use as a local repository for storing DSC modules?
Uma equipe central aceitará módulos de DSC das equipes de aplicativo?Will a central team accept DSC modules from application teams? Qual será o processo?What will the process be?
O empacotamento, a cópia e a criação do seu repositório de origem, de uma soma de verificação para módulos de DSC prontos para a produção no servidor, será automatizada?Will you automate packaging, copying, and creating a checksum for production-ready DSC modules to the server, from your source repo?
Sua equipe também será responsável pelo gerenciamento da plataforma de automação?Will your team be responsible for managing the automation platform as well?

Configurações DSCDSC configurations

A finalidade de um servidor de pull é fornecer um mecanismo centralizado para a distribuição de configurações DSC aos nós de cliente.The purpose of a pull server is to provide a centralized mechanism for distributing DSC configurations to client nodes. As configurações são armazenadas no servidor como documentos MOF.The configurations are stored on the server as MOF documents. Cada documento será nomeado com um GUID exclusivo.Each document will be named with a unique GUID. Quando os clientes são configurados para se conectar com um servidor de pull, também recebem o GUID para a configuração que devem solicitar.When clients are configured to connect with a pull server, they are also given the GUID for the configuration they should request. Esse sistema de referenciar configurações por GUID garante a exclusividade global e é flexível, de modo que uma configuração possa ser aplicada com granularidade por nó ou como uma configuração de função que abrange vários servidores que devem ter configurações idênticas.This system of referencing configurations by GUID guarantees global uniqueness and is flexible such that a configuration can be applied with granularity per node, or as a role configuration that spans many servers that should have identical configurations.

GUIDsGUIDs

O planejamento de GUIDs de configuração merece atenção adicional quando se pensa em uma implantação de servidor de pull.Planning for configuration GUIDs is worth additional attention when thinking through a pull server deployment. Não há nenhum requisito específico para manipular GUIDs e é provável que o processo seja exclusivo para cada ambiente.There is no specific requirement for how to handle GUIDs and the process is likely to be unique for each environment. O processo pode variar de simples a complexo: um arquivo CSV armazenado centralmente, uma tabela SQL simples, um CMDB ou uma solução complexa que exige integração com outra solução de ferramenta ou de software.The process can range from simple to complex: a centrally stored CSV file, a simple SQL table, a CMDB, or a complex solution requiring integration with another tool or software solution. Há duas abordagens gerais:There are two general approaches:

  • Atribuição de GUIDs por servidor — Fornece uma medida de garantia de que todas as configurações de servidor sejam controladas individualmente.Assigning GUIDs per server — Provides a measure of assurance that every server configuration is controlled individually. Isso fornece um nível de precisão em relação às atualizações e pode funcionar bem em ambientes com poucos servidores.This provides a level of precision around updates and can work well in environments with few servers.
  • Atribuição de GUIDs por função de servidor — Todos os servidores que executam a mesma função, como servidores Web, usam o mesmo GUID para fazer referência aos dados de configuração necessários.Assigning GUIDs per server role — All servers that perform the same function, such as web servers, use the same GUID to reference the required configuration data. Lembre-se de que se vários servidores compartilham o mesmo GUID, todos eles serão atualizados simultaneamente quando as configurações forem alteradas.Be aware that if many servers share the same GUID, all of them would be updated simultaneously when the configuration changes.

O GUID é algo que deve ser considerado como dado confidencial, porque ele pode ser aproveitado por alguém mal-intencionado para obter informações sobre como os servidores estão implantados e configurados no seu ambiente.The GUID is something that should be considered sensitive data because it could be leveraged by someone with malicious intent to gain intelligence about how servers are deployed and configured in your environment. Para obter mais informações, consulte Alocar GUIDs com segurança no Modo Pull da Configuração de Estado Desejado do PowerShell.For more information, see Securely allocating GUIDs in PowerShell Desired State Configuration Pull Mode.

Tarefa de planejamentoPlanning task
Quem será responsável pela cópia de configurações na pasta do servidor de pull quando elas estiverem prontas?Who will be responsible for copying configurations in to the pull server folder when they are ready?
Se as configurações são criadas por uma equipe de aplicativos, qual será o processo para entregá-las?If Configurations are authored by an application team, what will the process be to hand them off?
Você utilizará um repositório para armazenar configurações conforme elas são criadas entre as equipes?Will you leverage a repository to store configurations as they are being authored, across teams?
Você automatizará o processo de copiar as configurações para o servidor e criar uma soma de verificação quando estiverem prontas?Will you automate the process of copying configurations to the server and creating a checksum when they are ready?
Como você mapeará os GUIDs aos servidores ou às funções e onde isso será armazenado?How will you map GUIDs to servers or roles, and where will this be stored?
O que será usado como processo para configurar computadores cliente e como isso se integrará ao seu processo de criação e armazenamento de GUIDs de Configuração?What will you use as a process to configure client machines, and how will it integrate with your process for creating and storing Configuration GUIDs?

Guia de instalaçãoInstallation Guide

Os scripts fornecidos neste documento são exemplos estáveis. Sempre examine os scripts cuidadosamente antes de executá-los em um ambiente de produção.Scripts given in this document are stable examples. Always review scripts carefully before executing them in a production environment.

Pré-requisitosPrerequisites

Para verificar a versão do PowerShell no seu servidor use o comando a seguir.To verify the version of PowerShell on your server use the following command.

$PSVersionTable.PSVersion

Se possível, atualize para a versão mais recente do Windows Management Framework.If possible, upgrade to the latest version of Windows Management Framework. Em seguida, baixe o módulo xPsDesiredStateConfiguration usando o comando a seguir.Next, download the xPsDesiredStateConfiguration module using the following command.

Install-Module xPSDesiredStateConfiguration

O comando solicitará sua aprovação antes de baixar o módulo.The command will ask for your approval before downloading the module.

Scripts de instalação e configuraçãoInstallation and configuration scripts

-

O melhor método para implantar um servidor de pull de DSC é usar um script de configuração DSC.The best method to deploy a DSC pull server is to use a DSC configuration script. Este documento apresentará scripts que incluem as configurações básicas que configurariam apenas o serviço Web da DSC e as configurações avançadas, que configurariam um Windows Server de ponta a ponta, incluindo o serviço Web da DSC.This document will present scripts including both basic settings that would configure only the DSC web service and advanced settings that would configure a Windows Server end-to-end including DSC web service.

Observação: atualmente o módulo xPSDesiredStateConfiguation da DSC exige que o servidor seja de localidade EN-US.Note: Currently the xPSDesiredStateConfiguation DSC module requires the server to be EN-US locale.

Configuração básica para Windows Server 2012Basic configuration for Windows Server 2012


# This is a very basic Configuration to deploy a pull server instance in a lab environment on Windows Server 2012.

Configuration PullServer {
Import-DscResource -ModuleName xPSDesiredStateConfiguration

        # Load the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
          Ensure = 'Present'
          Name = 'DSC-Service'
        }

        # Use the DSC Resource to simplify deployment of the web service
        xDSCWebService PSDSCPullServer
        {
          Ensure = 'Present'
          EndpointName = 'PSDSCPullServer'
          Port = 8080
          PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
          CertificateThumbPrint = 'AllowUnencryptedTraffic'
          ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
          ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
          State = 'Started'
          DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
}
PullServer -OutputPath 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

Configuração avançada para Windows Server 2012 R2Advanced configuration for Windows Server 2012 R2

# This is an advanced Configuration example for Pull Server production deployments on Windows Server 2012 R2.
# Many of the features demonstrated are optional and provided to demonstrate how to adapt the Configuration for multiple scenarios
# Select the needed resources based on the requirements for each environment.
# Optional scenarios include:
#      * Reduce footprint to Server Core
#      * Rename server and join domain
#      * Switch from SSL to TLS for HTTPS
#      * Automatically load certificate from Certificate Authority
#      * Locate Modules and Configuration data on remote SMB share
#      * Manage state of default websites in IIS

param (
        [Parameter(Mandatory=$true)] 
        [ValidateNotNullorEmpty()] 
        [System.String] $ServerName,
        [System.String] $DomainName,
        [System.String] $CARootName,
        [System.String] $CAServerFQDN,
        [System.String] $CertSubject,
        [System.String] $SMBShare,
        [Parameter(Mandatory=$true)] 
        [ValidateNotNullorEmpty()] 
        [PsCredential] $Credential
    )

Configuration PullServer {
    Import-DscResource -ModuleName xPSDesiredStateConfiguration, xWebAdministration, xCertificate, xComputerManagement
    Node localhost
    {

        # Configure the server to automatically corret configuration drift including reboots if needed.
        LocalConfigurationManager
        {
            ConfigurationMode = 'ApplyAndAutoCorrect'
            RebootNodeifNeeded = $node.RebootNodeifNeeded
            CertificateId = $node.Thumbprint
        }

        # Remove all GUI interfaces so the server has minimum running footprint.
        WindowsFeature ServerCore
        {
            Ensure = 'Absent'
            Name = 'User-Interfaces-Infra'
        }

        # Set the server name and if needed, join a domain. If not joining a domain, remove the DomainName parameter.
        xComputer DomainJoin
        {
            Name = $Node.ServerName
            DomainName = $Node.DomainName
            Credential = $Node.Credential
        }

        # The next series of settings disable SSL and enable TLS, for environments where that is required by policy.
        Registry TLS1_2ServerEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }
        Registry TLS1_2ServerDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }
        Registry TLS1_2ClientEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }
        Registry TLS1_2ClientDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }
        Registry SSL2ServerDisabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server'
            ValueName = 'Enabled'
            ValueData = 0
            ValueType = 'Dword'
        }

        # Install the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
            Ensure = 'Present'
            Name = 'DSC-Service'
        }

        # If using a certificate from a local Active Directory Enterprise Root Certificate Authority, complete a request and install the certificate
        xCertReq SSLCert
        {
            CARootName = $Node.CARootName
            CAServerFQDN = $Node.CAServerFQDN
            Subject = $Node.CertSubject
            AutoRenew = $Node.AutoRenew
            Credential = $Node.Credential
        }

        # Use the DSC resource to simplify deployment of the web service.  You might also consider modifying the default port, possibly leveraging port 443 in environments where that is enforced as a standard.
        xDSCWebService PSDSCPullServer
        {
            Ensure = 'Present'
            EndpointName = 'PSDSCPullServer'
            Port = 8080
            PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
            CertificateThumbPrint = 'CertificateSubject'
            CertificateSubject = $Node.CertSubject
            ModulePath = "$($Node.SMBShare)\DscService\Modules"
            ConfigurationPath = "$($Node.SMBShare)\DscService\Configuration"
            State = 'Started'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }

        # Validate web config file contains current DB settings
        xWebConfigKeyValue CorrectDBProvider
        { 
            ConfigSection = 'AppSettings'
            Key = 'dbprovider'
            Value = 'System.Data.OleDb'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }
        xWebConfigKeyValue CorrectDBConnectionStr
        { 
            ConfigSection = 'AppSettings'
            Key = 'dbconnectionstr'
            Value = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }

        # Stop the default website
        xWebsite StopDefaultSite  
        { 
            Ensure = 'Present'
            Name = 'Default Web Site'
            State = 'Stopped'
            PhysicalPath = 'C:\inetpub\wwwroot'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
    }
}
$configData = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            ServerName = $ServerName
            DomainName = $DomainName
            CARootName = $CARootName
            CAServerFQDN = $CAServerFQDN
            CertSubject = $CertSubject
            AutoRenew = $true
            SMBShare = $SMBShare
            Credential = $Credential
            RebootNodeifNeeded = $true
            CertificateFile = 'c:\PullServerConfig\Cert.cer'
            Thumbprint = 'B9A39921918B466EB1ADF2509E00F5DECB2EFDA9'
            }
        )
    }
PullServer -ConfigurationData $configData -OutputPath 'C:\PullServerConfig\'
Set-DscLocalConfigurationManager -ComputerName localhost -Path 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

# .\Script.ps1 -ServerName web1 -domainname 'test.pha' -carootname 'test-dc01-ca' -caserverfqdn 'dc01.test.pha' -certsubject 'CN=service.test.pha' -smbshare '\\sofs1.test.pha\share' 

Verificar a funcionalidade do servidor de pullVerify pull server functionality

# This function is meant to simplify a check against a DSC pull server. If you do not use the default service URL, you will need to adjust accordingly.
function Verify-DSCPullServer ($fqdn) {
    ([xml](invoke-webrequest "https://$($fqdn):8080/psdscpullserver.svc" | % Content)).service.workspace.collection.href
}
Verify-DSCPullServer 'INSERT SERVER FQDN' 

Expected Result:
Action
Module
StatusReport
Node

Configurar clientesConfigure clients

Configuration PullClient {
    param(
    $ID,
    $Server
    )
        LocalConfigurationManager 
                { 
                    ConfigurationID = $ID;
                    RefreshMode = 'PULL';
                    DownloadManagerName = 'WebDownloadManager';
                    RebootNodeIfNeeded = $true;
                    RefreshFrequencyMins = 30;
                    ConfigurationModeFrequencyMins = 15; 
                    ConfigurationMode = 'ApplyAndAutoCorrect';
                    DownloadManagerCustomData = @{ServerUrl = "http://"+$Server+":8080/PSDSCPullServer.svc"; AllowUnsecureConnection = $true}
                }
}
PullClient -ID 'INSERTGUID' -Server 'INSERTSERVER' -Output 'C:\DSCConfig\'
Set-DscLocalConfigurationManager -ComputerName 'Localhost' -Path 'C:\DSCConfig\' -Verbose

Exemplos, trechos de código e referências adicionaisAdditional references, snippets, and examples

Este exemplo mostra como iniciar manualmente uma conexão de cliente (requer WMF5) para teste.This example shows how to manually initiate a client connection (requires WMF5) for testing.

Update-DSCConfiguration –Wait -Verbose

O cmdlet Add-DnsServerResourceRecordName é usado para adicionar um tipo de registro CNAME em uma zona DNS.The Add-DnsServerResourceRecordName cmdlet is used to add a type CNAME record to a DNS zone.

A função do PowerShell para Criar uma soma de verificação e publicar o MOF da DSC em um servidor de pull de SMB gera automaticamente a soma de verificação necessária e, em seguida, copia a configuração do MOF e os arquivos de soma de verificação para o servidor de pull de SMB.The PowerShell Function to Create a Checksum and Publish DSC MOF to SMB Pull Server automatically generates the required checksum, and then copies both the MOF configuration and checksum files to the SMB pull server.

Apêndice – Noções básicas sobre tipos de arquivo de dados do serviço ODATAAppendix - Understanding ODATA service data file types

Um arquivo de dados é armazenado para criar informações durante a implantação de um servidor de pull que inclui o serviço Web OData.A data file is stored to create information during deployment of a pull server that includes the OData web service. O tipo de arquivo depende do sistema operacional, conforme descrito abaixo.The type of file depends on the operating system, as described below.

  • Windows Server 2012Windows Server 2012
    O tipo de arquivo sempre será .mdbThe file type will always be .mdb
  • Windows Server 2012 R2Windows Server 2012 R2
    O tipo de arquivo padrão será .edb, a menos que um .mdb seja especificado na configuraçãoThe file type will default to .edb unless a .mdb is specified in the configuration

No Script de exemplo avançado para a instalação de um Servidor de Pull, você também encontrará um exemplo de como controlar automaticamente as configurações do arquivo web.config para evitar qualquer possibilidade de erro causado pelo tipo de arquivo.In the Advanced example script for installing a Pull Server, you will also find an example of how to automatically control the web.config file settings to prevent any chance of error caused by file type.