Introducción a PowerShell DSC – DevOps – Parte 1 | PowerShell

El rápido crecimiento y expansión de los servicios en la nube o cloud, trajo consigo muchos cambios no sólo para los desarrolladores y los profesionales de IT, sino también para los negocios.

Tal es así, que las organizaciones buscan adaptarse al desafío que propone la nube de conseguir elasticidad, mejora continua y entrega continua. Para ello se necesita agilizar la entrega, el mantenimiento y/o el monitoreo de sus servicios o productos con el objetivo de aumentar y mejorar la productividad.

Esto lleva a que los equipos de IT deban adaptarse al mundo nube, ya sea nube pública como puede ser Microsoft Azure, una nube privada en un datacenter o una nube híbrida. Por lo que deben pensar en el proceso de mejora continua, rápido aprovisionamiento de por ejemplo máquinas virtuales que cumplan cierta estandarización, automatización de procesos y configuraciones o detección/auto-corrección de errores cuando algo se desvía de lo normal o estándar.

En el mercado existen herramientas que ayudan a los administradores de IT a llegar a estos objetivos, son las llamadas herramientas de gestión de la configuración o Configuration Manager.

¿Que son las herramientas de gestión de la configuración?

 

Básicamente y en muy alto nivel, son herramientas que nos permiten automatizar el despliegue de sistemas operativos, aplicaciones y sus configuraciones.

Permiten a su vez, realizar el monitoreo del estado de los servicios y automatizar correcciones a errores que normalmente pueden suceder en nuestras aplicaciones sin que tengamos que estar presentes para arreglarlos.

Nos posibilitan administrar tanto nubes públicas, como privadas o híbridas y su vez diversos sistemas operativos.

Estas herramientas nos llevan al paradigma de la infraestructura como código, es decir permiten al equipo de IT, operar una plataforma utilizando programación, ya sea en lenguajes de alto nivel como pueden ser Ruby o Phyton, o en lenguajes declarativos.

A diferencia de los clásicos scripts que se utilizan para la automatización de tareas repetitivas, estas herramientas nos permiten orquestar todos los aspectos no solo de la infraestructura, sino de los aspectos de configuración, entrega, mantenimiento y monitoreo de una aplicación.

Algunos ejemplos son Chef, Puppet, SaltStack.

En este sentido, Microsoft PowerShell no se quiere quedar a través, es por eso que apareció desde la versión de Windows Server 2012 R2 y Windows 8.1 una extensión de Powershell llamada Desire State Configuration (DSC) o estado de la configuración deseada.

¿Pero qué es DSC?

 

DSC es una extensión de Powershell que apareció en la versión de Windows Server 2012 R2 y Windows 8.1,
Mediante DSC, vamos a poder manejar todos los aspectos, características y configuraciones de nuestras servidores y las aplicaciones que deben tener corriendo.

Algunas de las cosas que DSC nos va a permitir hacer son las siguientes:

  • Instalar o remover roles y características de servidor.
  • Manejar archivos y directorios.
  • Manejar configuraciones del registro de Windows.
  • Administrar los procesos y servicios.
  • Correr scripts de Powershell.
  • Instalar aplicaciones como pueden ser .MSI y .EXE.
  • Descubrir el estado de configuración actual de un servidor y modificarlo si fuese necesario.

A diferencia de los largos scripts clásicos que creábamos hasta el momento en Powershell, DSC es un lenguaje del tipo declarativo y mediante unas pocas líneas (o menor cantidad de código en comparación a un script tradicional), vamos a poder realizar toda la configuración y el servidor (llamado Nodo para PowerShell DSC), es el que se va a encargar de alcanzar el estado deseado que nosotros escribamos.

PowerShell DSC, está basado en el standard DMFT (Desktop Management Task Force) por lo que utiliza archivos MOF (Managed Object Format) para lograr su objetivo y WS-Management como protocolo de comunicación. Gracias a ello, puede integrarse con otras plataformas como Puppet, Chef y herramientas de plataformas como Linux.

¿Cómo funciona?

 

PowerShell DSC tiene dos modelos de implementación:

  • Pull Model: los nodos son configurados para verificar su configuración, por intervalos de tiempo contra un servidor el cual aloja los archivos MOF. Este servidor web es llamado “Pull Server”.
  • Push Model: básicamente la copia en forma manual de los archivos de configuración hacia el equipo destino en forma remota.

PSDSC

Como muestra la siguiente imagen se puede dividir en 3 fases:

  • Authoring Phase: Se crean los archivos MOF a través de PowerShell o de lenguajes / herramientas de terceros.
  • Staging Phase: Los archivos MOF son alojados donde corresponden. En el caso de utilizar el modelo Pull Server, son alojados en el servidor web para que se encuentren disponibles mediante una URI con el objetivo que los servidores destino puedan localizarlos.
  • “Make it So” Phase: Es la fase donde la información (MOF), es entregada al “Local Configuration Store” del destino, la cual contiene la configuración previa, la actual y el estado deseado. Aquí es donde la magia ocurre.

Sintaxis

A continuación mostramos la sintaxis básica de PowerShell DSC para la instalación de un servidor web:

Configuration WebServer {
param(
        [string[]]$computer="localhost"
    )

Node $computer {
               
        #Install IIS Role        
        WindowsFeature IIS
{
            Ensure = "Present"
            Name = "Web-Server"
}
	 #Install ASP NET 4.5 
	 WindowsFeature ASP 
	    { 
	      Ensure = “Present” 
	      Name = “Web-Asp-Net45” 
	    } 
	


}

}

Como pueden observar, se utiliza la palabra reservada “Configuration” donde se aloja todo el bloque de código de la configuración, a su vez pueden ver la palabra reservada “Node” con la cual indicamos el nombre del equipo destino a configurar.

Por último, ven en lenguaje declarativo la instalación del rol de IIS, y el .NET Framework 4.5.

Si analizamos el código brevemente, nos damos cuenta que es mucho más simple y con menor cantidad de líneas que realizar la instalación y configuración mediante un script clásico de PowerShell.

Conclusión

Las bondades que ofrece PowerShell DSC son muchas. Primero nos ofrece un lenguaje más simple y fácil para el despliegue y configuración de aplicaciones.

Nos permite configurar no solo aspectos de infraestructura, sino también las aplicaciones y todo el entorno que las rodea.

Por otro lado, está basado en estándares por lo que se integra con otras plataformas como Puppet, Chef y el mundo Linux.

Nos ofrece herramientas para el proceso de mejora continua y despliegue continuo, pudiéndonos adaptar a las necesidades actuales del mercado.

No solo sirve para nuestro datacenter, funciona tanto para nubes privadas, publicas (como Microsoft Azure) o hibridas.

En la próxima entrega, veremos un ejemplo sencillo en funcionamiento de PowerShell DSC.

¡Espero que les sea útil!

Advertisements

One thought on “Introducción a PowerShell DSC – DevOps – Parte 1 | PowerShell

Add yours

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

Up ↑

%d bloggers like this: