Procedimientos recomendados del servidor de extracciónPull server best practices

Se aplica a: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

Importante

El servidor de extracción (característica de Windows DSC-Service ) es un componente de Windows Server admitido, si bien no está previsto ofrecer nuevas características o funcionalidades.The Pull Server (Windows Feature DSC-Service ) is a supported component of Windows Server however there are no plans to offer new features or capabilities. Se recomienda empezar a realizar la transición de los clientes administrados a DSC de Azure Automation (incluye características más allá del servidor de extracción de Windows Server) o a una de las soluciones de la comunidad que figuran aquí.It is recommended to begin transitioning managed clients to Azure Automation DSC (includes features beyond Pull Server on Windows Server) or one of the community solutions listed here.

Resumen: El objetivo de este documento es incluir el proceso y la extensibilidad para ayudar a los ingenieros que se estén preparando para la solución.Summary: This document is intended to include process and extensibility to assist engineers who are preparing for the solution. En los detalles se deberían ofrecer procedimientos recomendados identificados por los clientes y después validados por el equipo del producto para garantizar que estén orientados al futuro y se consideren estables.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.

  • Autor: Michael GreeneAuthor: Michael Greene
  • Revisores: Ben Gelens, Ravikanth Chaganti y Aleksandar NikolicReviewers: Ben Gelens, Ravikanth Chaganti, Aleksandar Nikolic
  • Fecha de publicación: Abril de 2015Published: April, 2015

Descripción breveAbstract

Este documento está diseñado para proporcionar orientación oficial a cualquiera que esté planeando una implementación de servidor de extracción de la configuración de estado deseado de Windows PowerShell.This document is designed to provide official guidance for anyone planning for a Windows PowerShell Desired State Configuration pull server implementation. Un servidor de extracción es un servicio sencillo cuya implementación solo debería llevar unos minutos.A pull server is a simple service that should take only minutes to deploy. Aunque en este documento se ofrece orientación técnica de procedimientos que se puede usar durante una implementación, su valor es constituir una referencia de procedimientos recomendados y de aspectos que se deben tener en cuenta antes de implementar.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. Los lectores deberían tener conocimientos básicos de DSC y de los términos empleados para describir los componentes incluidos en una implementación 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 más información, consulte el tema Información general sobre la configuración de estado deseado de Windows PowerShell.For more information, see the Windows PowerShell Desired State Configuration Overview topic. Dado que se espera que DSC evolucione al ritmo de la nube, también se espera que la tecnología subyacente, incluido el servidor de extracción, evolucione e incorpore nuevas características.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 incluye una tabla de versiones en el apéndice que proporciona referencias a versiones anteriores y a soluciones futuras para fomentar diseños orientados al futuro.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.

Las dos secciones principales de este documento son estas:The two major sections of this document:

  • Planeamiento de configuraciónConfiguration Planning
  • Guía de instalaciónInstallation Guide

Versiones de Windows Management FrameworkVersions of the Windows Management Framework

La información de este documento se aplica a Windows Management Framework 5.0.The information in this document is intended to apply to Windows Management Framework 5.0. Aunque no se necesita WMF 5.0 para implementar ni usar un servidor de extracción, la versión 5.0 es el centro de este documento.While WMF 5.0 is not required for deploying and operating a pull server, version 5.0 is the focus of this document.

Configuración de estado deseado de Windows PowerShellWindows PowerShell Desired State Configuration

Configuración de estado deseado (DSC) es una plataforma de administración que permite implementar y administrar datos de configuración mediante una sintaxis del sector denominada Managed Object Format (MOF) para describir el Modelo de información común (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 un proyecto de código abierto, Infraestructura de administración abierta (OMI), para seguir desarrollando estos estándares en plataformas como Linux y sistemas operativos de hardware de red.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 más información, vea la página de DMTF con los vínculos a las especificaciones de MOF y los documentos y el código de OMI.For more information, see the DMTF page linking to MOF specifications, and OMI Documents and Source.

Windows PowerShell proporciona un conjunto de extensiones de lenguaje para Configuración de estado deseado que puede usar para crear y administrar configuraciones declarativas.Windows PowerShell provides a set of language extensions for Desired State Configuration that you can use to create and manage declarative configurations.

Rol de servidor de extracciónPull server role

Un servidor de extracción proporciona un servicio centralizado para almacenar configuraciones que sean accesibles a los nodos de destino.A pull server provides a centralized service to store configurations that will be accessible to target nodes.

El rol de servidor de extracción puede implementarse como una instancia de servidor web o como un recurso compartido de archivos SMB.The pull server role can be deployed as either a Web Server instance or an SMB file share. La característica de servidor web incluye una interfaz OData y opcionalmente puede incluir capacidades para que los nodos de destino confirmen el éxito o el error a medida que se apliquen las configuraciones.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. Esta funcionalidad es útil en entornos donde hay muchos nodos de destino.This functionality is useful in environments where there are a large number of target nodes. Después de configurar un nodo de destino (también conocido como cliente) para que apunte al servidor de extracción, se descargan y se aplican los datos de configuración más recientes y los scripts necesarios.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. Puede ser como una implementación única o como un trabajo recurrente, lo que también convierte al servidor de extracción en un activo importante para administrar el cambio a 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 más información, vea Windows PowerShell Desired State Configuration Pull Servers (Servidores de extracción de la configuración de estado deseado de Windows PowerShell) y Push and Pull Configuration Modes (Modos de configuración de inserción y extracción).For more information, see Windows PowerShell Desired State Configuration Pull Servers and Push and Pull Configuration Modes.

Planeamiento de configuraciónConfiguration planning

En cualquier implementación de software empresarial hay información que se puede recopilar de antemano para ayudar a planear la arquitectura correcta y a estar preparado para los pasos necesarios de implementación.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. En las secciones siguientes se proporciona información sobre cómo prepararse y sobre las conexiones organizativas que probablemente tengan que realizarse de antemano.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

La implementación de un servidor de extracción exige la característica Servicio de DSC de Windows Server.Deployment of a pull server requires the DSC Service feature of Windows Server. Esta característica se presentó en Windows Server 2012 y se ha actualizado en las versiones siguientes de Windows Management Framework (WMF).This feature was introduced in Windows Server 2012, and has been updated through ongoing releases of Windows Management Framework (WMF).

Descargas de softwareSoftware downloads

Además de instalar el contenido más reciente desde Windows Update, hay dos descargas recomendadas para implementar un servidor de extracción de DSC: la versión más reciente de Windows Management Framework y un módulo de DSC para automatizar el aprovisionamiento del servidor de extracción.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.

WMFWMF

Windows Server 2012 R2 incluye una característica denominada Servicio de DSC.Windows Server 2012 R2 includes a feature named the DSC Service. La característica Servicio de DSC proporciona la funcionalidad de servidor de extracción, incluidos los archivos binarios que admiten el punto de conexión de OData.The DSC Service feature provides the pull server functionality, including the binaries that support the OData endpoint. WMF está incluido en Windows Server y se actualiza a un ritmo ágil entre versiones de Windows Server.WMF is included in Windows Server and is updated on an agile cadence between Windows Server releases. Las nuevas versiones de WMF 5.0 pueden incluir actualizaciones de la característica Servicio de DSC.New versions of WMF 5.0 can include updates to the DSC Service feature. Por esta razón, se recomienda descargar la versión más reciente de WMF y revisar las notas de la versión para determinar si incluye una actualización de dicha característica.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. También debe revisar la sección de notas de la versión que indica si el estado de diseño de un escenario o una actualización es estable o 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 un ritmo de versiones ágil, hay características individuales que se pueden declarar estables, lo que indica que están listas para usarse en un entorno de producción, aunque WMF se haya publicado en versión preliminar.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. Otras características que históricamente se han actualizado con las versiones de WMF (vea las Notas de la versión de WMF para obtener más detalles):Other features that have historically been updated by WMF releases (see the WMF Release Notes for further detail):

  • Entorno de scripting integrado (ISE) de Windows PowerShellWindows PowerShell Windows PowerShell Integrated Scripting
  • Servicios web de Windows PowerShell (Extensión IIS Management OData)Environment (ISE) Windows PowerShell Web Services (Management OData
  • Configuración de estado deseado (DSC) de Windows PowerShellIIS Extension) Windows PowerShell Desired State Configuration (DSC)
  • Administración remota de Windows (WinRM) Instrumental de administración de Windows (WMI)Windows Remote Management (WinRM) Windows Management Instrumentation (WMI)

Recurso de DSCDSC resource

Una implementación de servidor de extracción se puede simplificar mediante el aprovisionamiento del servicio con un script de configuración DSC.A pull server deployment can be simplified by provisioning the service using a DSC configuration script. En este documento se incluyen scripts de configuración que pueden usarse para implementar un nodo de servidor listo para producción.This document includes configuration scripts that can be used to deploy a production ready server node. Para usar los scripts de configuración, se necesita un módulo de DSC que no está incluido en Windows Server.To use the configuration scripts, a DSC module is required that is not included in Windows Server. El nombre del módulo necesario es xPSDesiredStateConfiguration , que incluye el recurso de DSC xDscWebService.The required module name is xPSDesiredStateConfiguration , which includes the DSC resource xDscWebService. El módulo xPSDesiredStateConfiguration se puede descargar aquí.The xPSDesiredStateConfiguration module can be downloaded here.

Use el cmdlet Install-Module del módulo PowerShellGet.Use the Install-Module cmdlet from the PowerShellGet module.

Install-Module xPSDesiredStateConfiguration

El módulo PowerShellGet descargará el módulo en:The PowerShellGet module will download the module to:

C:\Program Files\Windows PowerShell\Modules

Tarea de planeamientoPlanning task

  • ¿Tiene acceso a los archivos de instalación de Windows Server 2012 R2?Do you have access to the installation files for Windows Server 2012 R2?
  • ¿El entorno de implementación tendrá acceso a Internet para descargar WMF y el módulo desde la galería en línea?Will the deployment environment have Internet access to download WMF and the module from the online gallery?
  • ¿Cómo se instalarán las actualizaciones de seguridad más recientes después de instalar el sistema operativo?How will you install the latest security updates after installing the operating system?
  • ¿El entorno tendrá acceso a Internet para obtener actualizaciones o tendrá un servidor local de Windows Server Update Services (WSUS)?Will the environment have Internet access to obtain updates, or will it have a local Windows Server Update Services (WSUS) server?
  • ¿Tiene acceso a archivos de instalación de Windows Server que ya incluyen actualizaciones mediante inserción sin conexión?Do you have access to Windows Server installation files that already include updates through offline injection?

Requisitos de hardwareHardware requirements

Las implementaciones de servidor de extracción se admiten tanto en servidores físicos como virtuales.Pull server deployments are supported on both physical and virtual servers. Los requisitos de tamaño del servidor de extracción están en línea con los requisitos de Windows Server 2012 R2.The sizing requirements for pull server align with the requirements for Windows Server 2012 R2.

  • CPU: procesador de 64 bits a 1,4 GHzCPU: 1.4 GHz 64-bit processor
  • Memoria: 512 MBMemory: 512 MB
  • Espacio en disco: 32 GBDisk Space: 32 GB
  • Red: adaptador Gigabit EthernetNetwork: Gigabit Ethernet Adapter

Tarea de planeamientoPlanning task

  • ¿Va a implementar en hardware físico o en una plataforma de virtualización?Will you deploy on physical hardware or on a virtualization platform?
  • ¿Cuál es el proceso para solicitar un nuevo servidor para el entorno de destino?What is the process to request a new server for your target environment?
  • ¿Cuál es el tiempo de respuesta medio para que un servidor esté disponible?What is the average turnaround time for a server to become available?
  • ¿Qué servidor de tamaño va a solicitar?What size server will you request?

CuentasAccounts

No hay ningún requisito de cuenta de servicio para implementar una instancia de servidor de extracción.There are no service account requirements to deploy a pull server instance. Pero hay escenarios donde el sitio web podría ejecutarse en el contexto de una cuenta de usuario local.However, there are scenarios where the website could run in the context of a local user account. Por ejemplo, si hay que acceder a un recurso compartido de almacenamiento de contenido del sitio web y Windows Server o el dispositivo que hospeda el recurso compartido de almacenamiento no están unidos a dominio.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

Al configurar clientes para trabajar con un entorno de servidor de extracción, tendrá que usar un nombre de servidor.You will need a server name to use when configuring clients to work with a pull server environment. En entornos de prueba, normalmente se usa el nombre de host del servidor o, si la resolución de nombres DNS no está disponible, se puede usar la dirección IP del servidor.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. En entornos de producción o en un entorno de laboratorio que sirve para representar una implementación de producción, el procedimiento recomendado es crear un registro CNAME DNS.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.

Un CNAME DNS le permite crear un alias para hacer referencia al registro de host (A).A DNS CNAME allows you to create an alias to refer to your host (A) record. El objetivo del registro de nombre adicional es aumentar la flexibilidad por si se necesitara un cambio en el futuro.The intent of the additional name record is to increase flexibility should a change be required in the future. Un CNAME puede ayudar a aislar la configuración del cliente para que los cambios en el entorno de servidor, como la sustitución de un servidor de extracción o la adición de servidores adicionales de extracción, no exijan un cambio correspondiente en la configuración del 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.

Al elegir un nombre para el registro DNS, tenga en cuenta la arquitectura de la solución.When choosing a name for the DNS record, keep the solution architecture in mind. Si usa equilibrio de carga, el certificado empleado para proteger el tráfico a través de HTTPS tendrá que llevar el mismo nombre que el 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.

EscenarioScenario Procedimiento recomendadoBest Practice
Entorno de pruebaTest Environment Si es posible, reproduzca el entorno de producción planeado.Reproduce the planned production environment, if possible. Un nombre de host del servidor es adecuado para configuraciones sencillas.A server hostname is suitable for simple configurations. Si DNS no está disponible, se puede usar una dirección IP en lugar de un nombre de host.If DNS is not available, an IP address may be used in lieu of a hostname.
Implementación de un solo nodoSingle Node Deployment Cree un registro CNAME DNS que apunte al nombre de host del servidor.Create a DNS CNAME record that points to the server hostname.

Para más información, vea Configuring DNS Round Robin in Windows Server (Configuración de round robin de DNS en Windows Server).For more information, see Configuring DNS Round Robin in Windows Server.

Tarea de planeamientoPlanning task

  • ¿Sabe con quién tiene que ponerse en contacto para crear y cambiar registros DNS?Do you know who to contact to have DNS records created and changed?
  • ¿Cuál es el tiempo de respuesta medio de una solicitud de registro DNS?What is the average turnaround for a request for a DNS record?
  • ¿Necesita solicitar registros estáticos de nombre de host (A) para servidores?Do you need to request static Hostname (A) records for servers?
  • ¿Qué va a solicitar como CNAME?What will you request as a CNAME?
  • En caso necesario, ¿qué tipo de solución de equilibrio de carga usaría?If needed, what type of Load Balancing solution will you utilize? (vea la sección Equilibrio de carga para obtener detalles)(see section titled Load Balancing for details)

Infraestructura de clave públicaPublic Key Infrastructure

Hoy en día la mayoría de las organizaciones exigen que el tráfico de red, especialmente aquel que incluye datos confidenciales tales como la forma en que los servidores están configurados, se valide o se cifre durante el 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. Aunque es posible implementar un servidor de extracción mediante HTTP, que permite las solicitudes de cliente en texto sin cifrar, el procedimiento recomendado es proteger el tráfico mediante 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. El servicio se puede configurar de modo que use HTTPS con un conjunto de parámetros en el recurso de DSC xPSDesiredStateConfiguration.The service can be configured to use HTTPS using a set of parameters in the DSC resource xPSDesiredStateConfiguration.

Los requisitos de certificado para proteger el tráfico HTTPS del servidor de extracción no difieren de la protección de cualquier otro sitio web HTTPS.The certificate requirements to secure HTTPS traffic for pull server are not different than securing any other HTTPS web site. La plantilla servidor web de Servicios de servidor de certificados de Windows Server satisface las capacidades necesarias.The Web Server template in a Windows Server Certificate Services satisfies the required capabilities.

Tarea de planeamientoPlanning task

  • Si las solicitudes de certificado no están automatizadas, ¿con quién tiene que ponerse en contacto para solicitar un certificado?If certificate requests are not automated, who will you need to contact to requests a certificate?
  • ¿Cuál es el tiempo de respuesta medio de la solicitud?What is the average turnaround for the request?
  • ¿Cómo se le transferirá el archivo de certificado?How will the certificate file be transferred to you?
  • ¿Cómo se le transferirá la clave privada del certificado?How will the certificate private key be transferred to you?
  • ¿Cuál es el periodo de expiración predeterminado?How long is the default expiration time?
  • ¿Ha decidido un nombre DNS para el entorno de servidor de extracción que pueda usar para el nombre de certificado?Have you settled on a DNS name for the pull server environment, that you can use for the certificate name?

Elección de una arquitecturaChoosing an architecture

Un servidor de extracción se puede implementar mediante un servicio web hospedado en IIS o un recurso compartido de archivos SMB.A pull server can be deployed using either a web service hosted on IIS, or an SMB file share. En la mayoría de los casos, la opción del servicio web proporcionará mayor flexibilidad.In most situations, the web service option will provide greater flexibility. No es raro que el tráfico HTTPS atraviese límites de red, mientras que el tráfico SMB se suele filtrar o bloquear entre redes.It is not uncommon for HTTPS traffic to traverse network boundaries, whereas SMB traffic is often filtered or blocked between networks. El servicio web también ofrece la opción de incluir un servidor de conformidad o un administrador de informes web (ambos temas se tratarán en una versión futura de este documento) que proporcionan un mecanismo para que los clientes informen del estado a un servidor para una visibilidad 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. SMB proporciona una opción para entornos donde la directiva determina que no se debe usar un servidor web y para otros requisitos de entorno que convierten a un rol de servidor web en no deseado.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. En cualquier caso, no olvide evaluar los requisitos de firma y cifrado del tráfico.In either case, remember to evaluate the requirements for signing and encrypting traffic. HTTPS, firma SMB y directivas IPSEC son opciones que vale la pena tener en cuenta.HTTPS, SMB signing, and IPSEC policies are all options worth considering.

Equilibrio de cargaLoad balancing

Los clientes que interactúan con el servicio web realizan una solicitud de información que se devuelve en una sola respuesta.Clients interacting with the web service make a request for information that is returned in a single response. No se necesitan solicitudes secuenciales, por lo que no es necesario que la plataforma de equilibrio de carga garantice el mantenimiento de las sesiones en un único servidor en cualquier momento.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.

Tarea de planeamientoPlanning task

  • ¿Qué solución se usará para equilibrar el tráfico entre servidores?What solution will be used for load balancing traffic across servers?
  • Si usa un equilibrador de carga de hardware, ¿quién recibirá la solicitud de agregar una nueva configuración al dispositivo?If using a hardware load balancer, who will take a request to add a new configuration to the device?
  • ¿Cuál es el tiempo de respuesta medio de una solicitud para configurar un nuevo servicio web de equilibrio de carga?What is the average turnaround for a request to configure a new load balanced web service?
  • ¿Qué información será necesaria para la solicitud?What information will be required for the request?
  • ¿Habrá que solicitar una dirección IP adicional o el equipo responsable del equilibrio de carga se ocupará de eso?Will you need to request an additional IP or will the team responsible for load balancing handle that?
  • ¿Tiene los registros DNS necesarios y el equipo responsable de configurar la solución de equilibrio de carga los necesitará?Do you have the DNS records needed, and will this be required by the team responsible for configuring the load balancing solution?
  • ¿La solución de equilibrio de carga exige que el dispositivo administre la PKI o puede equilibrar la carga de tráfico HTTPS siempre que no haya ningún requisito de sesión?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?

Preconfiguración de configuraciones y módulos en el servidor de extracciónStaging configurations and modules on the pull server

Como parte del planeamiento de configuración, debe pensar en los módulos y configuraciones de DSC que hospedará el servidor de extracción.As part of configuration planning, you will need to think about which DSC modules and configurations will be hosted by the pull server. A efectos del planeamiento de configuración, es importante tener un conocimiento básico de cómo preparar e implementar contenido en un servidor de extracción.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.

En el futuro, esta sección se ampliará y se incluirá en una guía de funcionamiento del servidor de extracción de DSC.In the future, this section will be expanded and included in an Operations Guide for DSC Pull Server. En esa guía se hablará del proceso cotidiano de administrar módulos y configuraciones a lo largo del tiempo mediante automatización.The guide will discuss the day to day process for managing modules and configurations over time with automation.

Módulos de DSCDSC modules

Los clientes que soliciten una configuración necesitarán los módulos de DSC necesarios.Clients that request a configuration will need the required DSC modules. Una funcionalidad del servidor de extracción es automatizar la distribución a petición de módulos de DSC a los clientes.A functionality of the pull server is to automate distribution on demand of DSC modules to clients. Si está implementando un servidor de extracción por primera vez, quizás como laboratorio o prueba de concepto, es probable que vaya a depender de los módulos de DSC que hay disponibles en repositorios públicos, como la Galería de PowerShell, o los repositorios GitHub de PowerShell.org para los 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.

Es fundamental recordar que cualquier módulo descargado de un repositorio público, incluso orígenes en línea de confianza como la Galería de PowerShell, debe ser revisado por alguien con experiencia en PowerShell y conocimiento del entorno donde se van a usar los módulos antes de que estos se empleen en producción.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. Mientras se realiza esta tarea, es buen momento para buscar cualquier carga adicional en el módulo que pueda quitarse, como scripts de ejemplo y documentación.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. Esto reducirá el ancho de banda de red por cliente en la primera solicitud, cuando los módulos se descarguen a través de la red desde el servidor al cliente.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 se debe empaquetar en un formato concreto, un archivo ZIP denominado NombreMódulo_Versión.zip que contiene la carga del módulo.Each module must be packaged in a specific format, a ZIP file named ModuleName_Version.zip that contains the module payload. Una vez que el archivo se ha copiado en el servidor, se debe crear un archivo de suma de comprobación.After the file is copied to the server a checksum file must be created. Cuando los clientes se conectan al servidor, la suma de comprobación se usa para comprobar que el contenido del módulo de DSC no ha cambiado desde que se publicó.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 .\

Tarea de planeamientoPlanning task

  • Si está planeando un entorno de prueba o laboratorio, ¿qué escenarios es fundamental validar?If you are planning a test or lab environment which scenarios are key to validate?
  • ¿Hay módulos disponibles públicamente que contengan recursos para cubrir todo lo que necesita o va a tener que crear sus propios recursos?Are there publicly available modules that contain resources to cover everything you need or will you need to author your own resources?
  • ¿El entorno tendrá acceso a Internet para recuperar módulos públicos?Will your environment have Internet access to retrieve public modules?
  • ¿Quién será responsable de revisar los módulos de DSC?Who will be responsible for reviewing DSC modules?
  • Si está planeando un entorno de producción, ¿qué usará como repositorio local para almacenar los módulos de DSC?If you are planning a production environment what will you use as a local repository for storing DSC modules?
  • ¿Habrá un equipo central que acepte los módulos de DSC de los equipos solicitantes?Will a central team accept DSC modules from application teams? ¿Cuál será el proceso?What will the process be?
  • ¿Se automatizará el empaquetado, la copia y la creación de una suma de comprobación para los módulos de DSC listos para producción que van al servidor desde el repositorio de origen?Will you automate packaging, copying, and creating a checksum for production-ready DSC modules to the server, from your source repo?
  • ¿El equipo también será responsable de administrar la plataforma de automatización?Will your team be responsible for managing the automation platform as well?

Configuraciones DSCDSC configurations

El fin de un servidor de extracción es proporcionar un mecanismo centralizado para distribuir configuraciones DSC a nodos cliente.The purpose of a pull server is to provide a centralized mechanism for distributing DSC configurations to client nodes. Las configuraciones se almacenan en el servidor como documentos MOF.The configurations are stored on the server as MOF documents. Cada documento tendrá como nombre un GUID único.Each document will be named with a unique Guid. Cuando se configuran los clientes para conectar con un servidor de extracción, se les da el GUID de la configuración que deben solicitar.When clients are configured to connect with a pull server, they are also given the Guid for the configuration they should request. Este sistema para hacer referencia a las configuraciones por GUID garantiza la exclusividad global y es flexible, de modo que una configuración se puede aplicar con granularidad por nodo o como una configuración de rol que abarca varios servidores que deben tener configuraciones 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.

GUIDGuids

El planeamiento de GUID de configuración merece atención adicional cuando se piensa en una implementación de servidor de extracción.Planning for configuration Guids is worth additional attention when thinking through a pull server deployment. No hay ningún requisito específico para cómo administrar GUID y el proceso es probable que sea único para cada entorno.There is no specific requirement for how to handle Guids and the process is likely to be unique for each environment. El proceso puede ir desde sencillo a complejo: un archivo CSV almacenado centralmente, una tabla SQL simple, una CMDB o una solución compleja que exija integración con otra herramienta o solución 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. Hay dos enfoques generales:There are two general approaches:

  • Asignar GUID por servidor : ofrece una forma de garantizar que cada configuración de servidor se controla individualmente.Assigning Guids per server — Provides a measure of assurance that every server configuration is controlled individually. Esto proporciona un nivel de precisión en torno a las actualizaciones y puede funcionar bien en entornos con pocos servidores.This provides a level of precision around updates and can work well in environments with few servers.

  • Asignar GUID por rol de servidor : todos los servidores que realizan la misma función, como los servidores web, usan el mismo GUID para hacer referencia a los datos de configuración necesarios.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. Tenga en cuenta que si hay muchos servidores que compartan el mismo GUID, todos ellos se actualizarían simultáneamente cuando cambiara la configuración.Be aware that if many servers share the same GUID, all of them would be updated simultaneously when the configuration changes.

    El GUID debería considerarse información confidencial, porque podría ser aprovechado por alguien con malas intenciones para obtener datos sobre cómo están implementados y configurados los servidores en el entorno.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 más información, vea Securely allocating Guids in PowerShell Desired State Configuration Pull Mode (Asignación segura de GUID en modo de extracción de la configuración de estado deseado de PowerShell).For more information, see Securely allocating Guids in PowerShell Desired State Configuration Pull Mode.

Tarea de planeamientoPlanning task

  • ¿Quién será responsable de copiar las configuraciones en la carpeta del servidor de extracción cuando estén listas?Who will be responsible for copying configurations in to the pull server folder when they are ready?
  • Si un equipo solicitante crea configuraciones, ¿cuál será el proceso para entregarlas?If Configurations are authored by an application team, what will the process be to hand them off?
  • ¿Aprovechará un repositorio para almacenar las configuraciones a medida que se crean para todos los equipos?Will you leverage a repository to store configurations as they are being authored, across teams?
  • ¿Automatizará el proceso de copiar las configuraciones en el servidor y de crear una suma de comprobación cuando estén listas?Will you automate the process of copying configurations to the server and creating a checksum when they are ready?
  • ¿Cómo se asignarán los GUID a los servidores o roles y dónde se almacenarán?How will you map Guids to servers or roles, and where will this be stored?
  • ¿Qué proceso usará para configurar equipos cliente y cómo se integrará con el proceso para crear y almacenar GUID de configuración?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?

Guía de instalaciónInstallation Guide

Los scripts de este documento son ejemplos estables. Revise siempre los scripts detenidamente antes de ejecutarlos en un entorno de producción.Scripts given in this document are stable examples. Always review scripts carefully before executing them in a production environment.

Requisitos previosPrerequisites

Para comprobar la versión de PowerShell del servidor, use el siguiente comando.To verify the version of PowerShell on your server use the following command.

$PSVersionTable.PSVersion

Si es posible, actualice a la versión más reciente de Windows Management Framework.If possible, upgrade to the latest version of Windows Management Framework. Luego, ejecute el módulo xPsDesiredStateConfiguration con el siguiente comando.Next, download the xPsDesiredStateConfiguration module using the following command.

Install-Module xPSDesiredStateConfiguration

El comando le pedirá su aprobación antes de descargar el módulo.The command will ask for your approval before downloading the module.

Scripts de instalación y configuraciónInstallation and configuration scripts

El mejor método para implementar un servidor de extracción de DSC es usar un script de configuración de DSC.The best method to deploy a DSC pull server is to use a DSC configuration script. En este documento se presentan los scripts incluyendo tanto la configuración básica que configuraría solo el servicio web de DSC como la configuración avanzada que configuraría un servidor descentralizado de Windows Server, incluido un servicio web de 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.

Nota: De momento, el módulo xPSDesiredStateConfiguration de DSC exige que la configuración regional del servidor sea EN-US.Note: Currently the xPSDesiredStateConfiguration DSC module requires the server to be EN-US locale.

Configuración básica de 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\'

Configuración avanzada de 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'

Comprobar funcionalidad de servidor de extracciónVerify 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

Referencias, fragmentos de código y ejemplos adicionalesAdditional references, snippets, and examples

En este ejemplo se muestra cómo iniciar manualmente una conexión de cliente (necesita WMF5) para realizar pruebas.This example shows how to manually initiate a client connection (requires WMF5) for testing.

Update-DscConfiguration –Wait -Verbose

Se usa el cmdlet DnsServerResourceRecordName agregar para agregar un registro CNAME de tipo a una zona DNS.The Add-DnsServerResourceRecordName cmdlet is used to add a type CNAME record to a DNS zone.

La función de PowerShell para crear una suma de comprobación y publicar el MOF de DSC en el servidor de extracción SMB genera automáticamente la suma de comprobación necesaria y, luego, copia los archivos de suma de comprobación y de configuración MOF en el servidor de extracción 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 - Conceptos básicos de tipos de archivos de datos del servicio ODATAAppendix - Understanding ODATA service data file types

Se almacena un archivo de datos para crear información durante la implementación de un servidor de extracción que incluye el servicio web OData.A data file is stored to create information during deployment of a pull server that includes the OData web service. El tipo de archivo depende del sistema operativo, como se describe a continuación.The type of file depends on the operating system, as described below.

  • Windows Server 2012 : el tipo de archivo siempre será .mdb.Windows Server 2012 - The file type will always be .mdb
  • Windows Server 2012 R2 : el tipo de archivo será .edb de forma predeterminada a menos que se especifique un tipo .mdb en la configuración.Windows Server 2012 R2 - The file type will default to .edb unless a .mdb is specified in the configuration

En el script de ejemplo avanzado para instalar un servidor de extracción, también encontrará un ejemplo de cómo controlar automáticamente la configuración del archivo web.config para evitar cualquier posibilidad de error causado por el tipo de archivo.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.