¿Qué es diferente / mejor acerca de DSC vs scripting "regular"?

8

Vi un video en ITPro.tv sobre el DSC de configuración de estado deseado de PowerShell . Lo presentan y efectivamente ejecutan un script. Sin embargo, esta fue su primera introducción (real) de secuencias de comandos también, por lo que no percibí la diferencia entre DSC y secuencias de comandos normales. He hecho algunas secuencias de comandos regulares antes, y tal vez simplemente no tenían ese gran ejemplo; parecía que un script normal podría instalar un rol / característica y copiar algunos archivos muy bien. No vi el beneficio para DSC en comparación con solo un script. Además de que una máquina puede sondear algún tipo de cambio, que no cubrieron en la práctica, solo en teoría.

¿Cuáles son los beneficios de DSC sobre los scripts tradicionales? por ejemplo "instalar rol, copiar archivo"?

  • Con PowerShell, puede conectarse a máquinas remotas y decirles que hagan cosas, por lo que no es exclusivo de DSC.
  • Con DSC parece que estás haciendo algún tipo de compilación para hacer un archivo mof, y luego lo ejecutas desde el shell después del script, lo que parece un paso innecesario.
  • La descripción general de MSDN se lee como una descripción general de PowerShell, y no veo las características diferenciadoras.
YetAnotherRandomUser
fuente

Respuestas:

7

Como has dicho, puedes hacer casi todo lo que harías con DSC, con código directo de PowerShell.

Pero, DSC tiene que ver con la gestión de la configuración.

La gestión de la configuración se trata de patrones y prácticas de uso de código y varios sistemas para garantizar que un sistema se encuentre en un estado específico. Ref. 1 2

Una cosa importante sobre la gestión de la configuración es la idempotencia. Es decir, el código que describe su sistema en el sistema de gestión de configuración se verificará y ejecutará periódicamente en su sistema. Muchos scripts básicos no están bien diseñados y harán lo correcto la primera vez que lo use para configurar un sistema, pero la próxima vez que cometan errores, duplicarán cosas, etc. Los sistemas de gestión de la configuración idealmente abstraerán una gran parte del código de prueba y verificación de estado que debe agregar manualmente en un script, para que su script sea idempotente.

Otra cosa importante acerca de DSC y muchos otros sistemas de administración de configuración es hacer recursos reutilizables que realmente hagan el trabajo que se pueda compartir con cualquier persona en el mundo. De esta manera, su "configuración" en realidad debería ser solo los pocos detalles específicos que son específicos de su entorno. Esto también significa que debe escribir mucho menos código, ya que puede reutilizar cosas que otras personas han utilizado y examinado.

He incluido algunos enlaces arriba, pero hay muchos buenos sitios web que puedes encontrar en Internet sobre la teoría de los sistemas de administración de configuración. La teoría general se aplica a todos los sistemas de gestión de configuración (puppet, chef, dsc, ansible, etc.) sin duda vale la pena aprender y vale la pena usarla en la mayoría de los entornos.

Zoredache
fuente
1

Le sugiero que eche un vistazo a https://docs.microsoft.com/en-us/powershell/dsc/dscforengineers#i-have-powershell-why-do-i-need-desired-state-configuration .

He estado haciendo devops como líder de proyecto de C # desde mucho antes de que se llamara así. He escrito docenas de estos scripts de "configurar un recurso compartido", "crear una aplicación en IIS" y "verificar si IIS Rewrite está instalado". Generalmente alguien me pide que piense "Es solo una línea de código para hacer X". Pero, ¿y si la cosa ya existe? ¿Qué sucede si los pasos 1,3 ya existen pero 2,4 no existen, o el paso 2 (digamos un grupo de aplicaciones IIS) no está configurado exactamente igual que la última vez?

Sí, DSC requiere que nombre cada "parte" del script. Lo que parece tedioso al principio. Pero si no lo nombra, entonces el motor DSC y los proveedores no pueden decirle qué parte del script tarda demasiado o qué parte del script falla.

Si está haciendo carpetas, IIS, implementación de aplicaciones o características de Windows, le recomiendo que invierta unos días en aprender DSC.

yzorg
fuente