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

En la parte 1 de esta serie de entregas orientadas a PowerShell DSC – DevOps, vimos los nuevos desafíos que trae la nube con su paradigma, la transformación que deben hacer los profesionales de IT, las herramientas que facilitan el camino hacia dicha transformación y la introducción sobre PowerShell Desire State Configuration (DSC) con sus conceptos y funcionamiento básico.

En esta ocasión, vamos a ver un ejemplo real del uso de DSC donde realizaremos la configuración y aprovisionamiento de un sitio web en HTML5, CSS y Javascript sobre IIS.

Escenario:

 

  • Necesitamos realizar el despliegue de un prototipo del carrito de compras llamado LaCasa realizado en HTML5, CSS y JavaScript.
  • Contamos con un dominio de Active Directory con los servidores que se mencionan debajo.
  • Un servidor llamado DC-NG-01 con Windows Server 2012 R2, desde donde generáremos el archivo de configuración (MOF) a través de Powershell.
  • Un servidor llamado NG-VM-IIS01 con Windows Server 2012 R2, el cual alojará el sitio web.
  • Un repositorio compartido donde se encuentran los archivos necesarios para el despliegue del sitio web.
  • Utilizaremos el modelo de Push. Es decir enviaremos directamente la configuración hacia el servidor destino.

Despligue LaCasa Web Site.

 

Si nos remitimos al artículo anterior, sabemos que DSC tiene 3 fases y vimos en alto nivel su teoría. Ahora veremos dichas fases aplicadas.

Authoring Phase:

 

A través del PowerShell ISE del servidor DC-NG-01, escribiremos el código necesario para que sea posible realizar la creación del archivo MOF.

Primero generáremos el bloque de configuración con la palabra reservada “Configuration”.

Configuration LaCasaWebSite {

}

Como pueden ver, el nombre de la configuración será LaCasaWebSite.

Segundo, le agregaremos parámetros mediante la palabra reservada “param”. En este caso sólo le pasaremos el nombre del equipo destino como string, en la variable llamada “$TargetComputer”.

Configuration LaCasaWebSite {

param(
[string[]]$TargetComputer
)

}

Luego debemos indicar el nodo al cual le realizaremos el despliegue, es decir el servidor de destino. En este caso, se lo pasaremos mediante la variable $TargetComputer.

Configuration LaCasaWebSite {

param(
[string[]]$TargetComputer
)

node $TargetComputer{
}

}

Llegó el momento de la configuración, vamos a realizar la instalación de IIS y ASP.NET. Para ello utilizaremos la palabra reservada WindowsFeature, mediante la cual se instalan los roles y características de servidor.

Configuration LaCasaWebSite {

param(
[string[]]$TargetComputer
)

node $TargetComputer{

    #Instalación de rol IIS
    WindowsFeature IIS
    {

        Ensure = 'Present'
        Name = 'Web-Server'

    }

    #Instalación de ASP .NET 4.5
    WindowsFeature ASP
    {

            Ensure = 'Present'
            Name = 'Web-Asp-Net45'

    }

}

Como pueden observar, dentro del bloque de instalación se encuentran las siguientes palabras reservadas:

  • Ensure: Indica si el rol debe estar presente o no. En este caso lo ponemos en “Present”.
  • Name: El nombre del rol a instalar. Esto lo podemos sacar fácilmente mediante el comando Get-WindowsFeature.

Para finalizar, configuraremos el copiado de los archivos fuente que correrá nuestro sitio web, por lo que utilizaremos el recurso para hacerlo con la palabra reservada “File”.

Dentro del bloque File, encontramos las siguientes instrucciones:

  • Ensure: Indicamos que debe estar presente.
  • Type: Indicamos que es un directorio. En caso que se un archivo se utiliza File en lugar de Directory.
  • Recurse: Indica que deben ser incluidas todas las subcarpetas.
  • SourcePath: Ubicacion de los archivos de origen.
  • DestinationPath: Ubicación de los archivos de destino.
Configuration LaCasaWebSite {

param(
[string[]]$TargetComputer
)

node $TargetComputer{

    #Instalación de rol IIS
    WindowsFeature IIS
    {

        Ensure = 'Present'
        Name = 'Web-Server'

    }

    #Instalación de ASP .NET 4.5
    WindowsFeature ASP
    {

            Ensure = 'Present'
            Name = 'Web-Asp-Net45'

    }

    #CopiadoArchivos
    File LaCasaSourceCode
    {
        Ensure = 'Present'
        Type =  'Directory'
        Recurse = $true
        SourcePath = '\\DC-NG-01\LaCasaSourceCode'
        DestinationPath = '%systemdrive%\inetpub\wwwroot'

    } 

}

Listo, ya tenemos el archivo de configuración finalizado. Lo guardamos en un PS1 para utilizarlo en la siguiente fase.

Conclusión

A diferencia de los clásicos scripts, utilizar un lenguaje declarativo como PowerShell DSC, nos facilita el camino a la hora de generar nuestro código para el despliegue o configuración. Escribimos menos cantidad de líneas, es más legible y fácil de transmitir.

En la próxima entrega sobre DSC, veremos las dos fases restantes, “Staging Phase” y “Make it So”.

Si quieren volver a ver la primer parte click aquí.

¡¡Hasta entonces!!

Advertisements

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

Blog at WordPress.com.

Up ↑

%d bloggers like this: