De qué lado estás: Push and Pull en la configuración de estado deseada

Ya describimos cómo describir la configuración en la Configuración de estado deseada (DSC) y desensamblamos el agente del Administrador de configuración local (LCM) incorporado para aplicar la configuración en el servidor. En la primera parte del artículo, caminamos paso a paso sobre las características principales de la herramienta junto con Evgeny Parfenov de DataLine .

Aquí nos sumergimos en las configuraciones y características en los modos Push y Pull.



Lo que diremos:


  1. Diferencias entre los modos Push y Pull
  2. Modo push en detalle
  3. Modo de extracción en detalle

Diferencias entre los modos Push y Pull


En el modo Push, iniciamos manualmente o mediante script el proceso de aplicación de cambios al servidor (local o remotamente). El Administrador de configuración local (LCM) aplica la configuración de forma interactiva.

En modo Pull, el agente LCM programado en el servidor compara su configuración con la configuración publicada en el repositorio de configuración compartida. Si hay cambios, la configuración se copia localmente y se aplica.

Los pros y los contras de ambos modos de operación son bastante obvios.
empujarHalar
+
  1. Costo. No requiere la instalación de servidores adicionales.
  2. Arquitectura simple Todas las configuraciones se almacenan localmente en la forma que sea conveniente para el administrador.
  3. Apto para pruebas. Dsc
  4. DevOps Way. Al implementar servidores, es muy fácil de automatizar y se ajusta a la filosofía de Infraestructura como Código.
  5. run-once .
  1. . .
  2. . DSC .
  3. Azure Automation State Configuration, Windows Server 2012R2+
  1. On-Premise c . , .
  1. , .
  2. On-Premise GPO, .
  3. — , .
La configuración de recursos también es ligeramente diferente para los diferentes modos. Como recordamos, para usar un recurso, debe instalarlo localmente y en el servidor.

En el caso de utilizar el modo Push, el administrador primero debe instalar todos los recursos necesarios en el servidor administrado y en la PC, desde donde se enviará la configuración.

En el modo Pull, el agente DSC en el servidor administrado puede instalar independientemente todos los recursos necesarios del servidor Pull; la tarea del administrador es colocarlos en el servidor Pull. Sin embargo, tenemos en cuenta que es imposible predecir la aplicación de la configuración en modo Pull, ya que el GPO no es una entrega garantizada de configuraciones.

Modo push en detalle






El proceso de alto nivel de escritura y aplicación de configuraciones DSC se puede representar de la siguiente manera: en la primera etapa ( Autoría ) describimos la configuración utilizando cualquier IDE que sea conveniente para nosotros (Bloc de notas, PowerShell ISE, Visual Studio Code y otros). Al finalizar, compilamos los archivos de configuración de mof (el proceso de compilación se describe en nuestro artículo anterior ).

En la segunda etapa ( puesta en escena / compilación ), comenzamos a aplicar la configuración desde el archivo mof compilado usando el cmdlet Start-DSCConfiguration . En el proceso, el servidor de administración transmite el archivo .mof del servidor LCM, que es para aplicar la configuración.
En este caso, es mejor usar el modificador -Verbose. Para un control completo del proceso de configuración:

PS C:\windows\system32> Start-DscConfiguration -Path C:\EnvironmentVariable_Path\ -Wait -Verbose

# C 
VERBOSE: Perform operation 'Invoke CimMethod' with following parameters, ''methodName' =
SendConfigurationApply,'className' = MSFT_DSCLocalConfigurationManager,'namespaceName' =
root/Microsoft/Windows/DesiredStateConfiguration'.
VERBOSE: An LCM method call arrived from computer COMPUTER with user sid
S-1-5-21-SID.

#  
VERBOSE: [COMPUTER]: LCM:  [ Start  Set      ]
VERBOSE: [COMPUTER]: LCM:  [ Start  Resource ]  [[Environment]CreatePathEnvironmentVariable]

#       (test)
VERBOSE: [COMPUTER]: LCM:  [ Start  Test     ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]:                            [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' does not exist.
VERBOSE: [COMPUTER]: LCM:  [ End    Test     ]  [[Environment]CreatePathEnvironmentVariable]  in 0.1320 seconds.
#      “Environment variable 'TestPathEnvironmentVariable' does not exist”

#       
VERBOSE: [COMPUTER]: LCM:  [ Start  Set      ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]:                            [[Environment]CreatePathEnvironmentVariable] Environment variable
'TestPathEnvironmentVariable' created with value 'TestValue'.
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]  [[Environment]CreatePathEnvironmentVariable]  in 0.0690 seconds.
VERBOSE: [COMPUTER]: LCM:  [ End    Resource ]  [[Environment]CreatePathEnvironmentVariable]
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]
VERBOSE: [COMPUTER]: LCM:  [ End    Set      ]    in  2.1900 seconds.
#  

#  
VERBOSE: Operation 'Invoke CimMethod' complete.
VERBOSE: Time taken for configuration job to complete is 2.749 seconds

Se puede ver que el motor verificó la presencia de la variable, no la encontró y creó una nueva, de acuerdo con la configuración especificada:



en la tercera etapa ( Ejecución ), el agente DSC LCM ingresa al juego. Recibe un archivo mof, lo comprueba, lo coloca en una carpeta $env:systemRoot/system32/configurationy lanza un flujo de trabajo para aplicar el archivo de configuración:

  1. LCM recibe, aplica el archivo de configuración. El archivo se renombra a pendiente.mof y se coloca en$env:systemRoot/system32/configuration
    • Si la aplicación del archivo de configuración falla, el archivo pendientes.mof permanece y LCM intentará aplicarlo en el próximo ciclo.
  2. Si el archivo current.mof ya está en la carpeta, se renombra a previous.mof
  3. Si la aplicación del archivo de configuración se completa con éxito, entonces LCM lo renombra a current.mof
  4. El archivo current.mof se copia en el archivo backup.mof

Gráficamente, el flujo de trabajo se puede representar de la siguiente manera:



para administrar diferentes archivos de configuración, hay un cmdlet Remove-DSCConfigurationDocument que le permite eliminar documentos específicos si es necesario por alguna razón. Sin embargo, nada nos impide eliminarlos manualmente.

Modo de extracción en detalle


El modo de extracción es más difícil de implementar y configurar, pero simplifica enormemente el proceso de administración de servidores que están conectados a él.

El esquema general se verá así: el



modo Pull requiere la implementación de un servidor Pull. De hecho, es un servidor web normal, que puede proporcionar a los clientes mof archivos y recursos que pueden ser necesarios al aplicar configuraciones desde mof archivos. Este último simplifica enormemente el proceso de gestión y configuración de servidores, ya que la tarea de entregar los recursos necesarios recae en el cliente. El servidor Pull al mismo tiempo actúa como un repositorio \ repositorio de recursos.

Pull-server puede proporcionar acceso a recursos y archivos de configuración a través de dos protocolos:

  1. SMB. . DFS-R. , , . SMB , Kerberos.
  2. Http\https. . IIS.

La instalación del servidor de extracción se puede realizar a través de los recursos regulares que ofrece el equipo de desarrollo de DSC. Más detalles se pueden encontrar aquí . O use soluciones impulsadas por la comunidad: aquí o aquí .

El flujo de trabajo para seguir trabajando con el servidor de extracción es el siguiente:

  1. Configuramos clientes (LCM) para trabajar con un servidor pull.
  2. Cargue archivos de recursos al servidor de extracción.
  3. Preparamos archivos de configuración del cliente (escritura y compilación) y archivos con sumas de verificación.
  4. Disfruta el resultado.

Configuración de clientes (LCM) para trabajar con un servidor de extracción

Para hacer esto, use la siguiente configuración de LocalConfigurationManager (v5) :

Bloque de configuración:

  • CertificateID : indica la huella digital del certificado para proteger los inicios de sesión / contraseñas transmitidos en la configuración.
  • ConfigurationID : contiene el GUID del cliente. Solo las configuraciones que contienen su GUID en el nombre del archivo de configuración se aplicarán al cliente. La configuración se deja para la compatibilidad con versiones anteriores del servidor de extracción. Es mejor usar la configuración RegistrationKey.
  • RefreshMode : para trabajar con servidores Pull, especifique Pull en esta configuración.

Bloque ConfigurationRepositoryWeb:

  • AllowUnsecureConnection : permite \ no permitir la conexión sin autenticación.
  • CertificateID : indica la huella digital del certificado en el cliente, que se utilizará en el proceso de autenticación mutua con el servidor.
  • ConfigurationNames : una matriz de nombres de configuración que se aplicarán al cliente.
  • RegistrationKey : un secreto generado en el servidor, que el cliente utiliza para registrarse en el servidor.
  • ServerURL : URL del servidor Pull con configuraciones.

Bloque ResourceRepositoryWeb:

  • AllowUnsecureConnection : permite \ no permitir la conexión sin autenticación.
  • CertificateID : indica la huella digital del certificado en el cliente, que se utilizará en el proceso de autenticación mutua con el servidor.
  • RegistrationKey : un secreto generado en el servidor, que el cliente utiliza para registrarse en el servidor.
  • ServerURL : URL del servidor Pull con recursos.

Bloque ReportServerWeb:

  • AllowUnsecureConnection : permite \ no permitir la conexión sin autenticación.
  • CertificateID : indica la huella digital del certificado en el cliente, que se utilizará en el proceso de autenticación mutua con el servidor.
  • RegistrationKey : un secreto generado en el servidor, que el cliente utiliza para registrarse en el servidor.
  • ServerURL : URL del servidor Pull con informes.

Subir archivos de recursos al servidor Pull

Después de aplicar la nueva configuración en LCM, que le enseñará cómo usar el servidor Pull, puede cargar archivos de recursos en el servidor . Los recursos se cargan en el servidor en forma de archivos zip (la carpeta con el recurso está empaquetada en zip). Regla para nombrar dicho archivo:

{ModuleName}_{Version}.zip

La ubicación predeterminada del archivo $env:PROGRAMFILES\WindowsPowerShell\DscService\Modules. Al instalar el servidor Pull, esta carpeta se puede redefinir. Además del archivo con la carpeta de recursos empaquetada en zip, también debe colocar el archivo con la suma de verificación de este recurso empaquetado en el mismo lugar. Por ejemplo, así:

New-DscChecksum -Path .\xPSDesiredStateConfiguration_8.4.4.0.zip

Colocación de archivos de configuración del cliente en el servidor Pull

Es importante tener en cuenta aquí que podemos usar dos modos de operación del cliente en este caso (en realidad dos y medio): el cliente del servidor recibirá la configuración usando ConfigurationID , o el cliente usará el nombre de configuración - ConfigurationName . Si es necesario aplicar varias configuraciones, todas se pueden especificar en ConfigurationName, pero deberá configurar LCM para trabajar con configuraciones parciales.

Al usar ConfigurationID, debe enfatizarse que el archivo de configuración mof que se aplicará al cliente contendrá un GUID (está contenido en el ConfigurationID). En el caso de usar ConfigurationName, el archivo mof contendrá el nombre de configuración, que especificaremos en ConfigurationName. En ambos casos, además del archivo mof, el archivo de suma de verificación de configuración también se colocará allí:

New-DscChecksum -Path '.\' -Force

En conclusión


Analizamos dos formas de aplicar cambios al servidor en los modos Push y Pull. Repasamos las características de uso e intentamos explicar todos los matices que pueden surgir al trabajar con estos modos en DSC. Si todavía tiene preguntas, hablemos en los comentarios. Y si no tenía suficiente visibilidad, venga a nuestra reunión en línea el 28 de mayo: analizaremos los sistemas de comunicaciones unificadas y facilidades de comunicación (configurando la carga de registros de Exchange en Elastic, Microsoft Endpoint Manager para iOS, Android y Windows 10) y hablaremos con más detalle sobre los límites de aplicabilidad Configuración del estado deseado de PowerShell. Solo necesitas registrarte .

All Articles