PowerShell DSC en Linux parte II

PowerShell DSC ya no es un producto nuevo, ya se ha consolidado como una gran herramienta de gestión de la configuración. Ahora también abarcando los sistemas Linux y cada vez con más fuerza. Por ello es que quiero hablar un poco más de este nicho, ya que es necesario estar a la altura a la hora de poder implementar DSC en Linux y no fracasar en el intento.

Como recordatorio quiero compartir el enlace a mi entrada anterior sobre DSC en Linux para estar nivelados en conceptos y terminología.

Continuando con el tema en cuestión, vamos a definir nuestro objetivo de hoy: implementar un servidor web junto a una página HTML básica solamente con PowerShell.

Archivo de configuración MOF

Como vimos anteriormente es necesario invocar en la configuración el módulo nx, responsable de poder realizar la interacción con nuestro servidor CentOS. Básicamente vamos a definir la receta de configuración que permite instalar el servidor web y generar un simple archivo index.html como sitio estático:

Configuration DSCLinuxWeb {
    Import-DSCResource -Module nx

    Node "40.121.221.115" {
        nxPackage httpd {
            Name = "httpd"
            Ensure = "Present"
            PackageManager = "Yum"
        }

        nxService ApacheService {
            Name = "httpd"
            State = "Running"
            Enabled = $true
            Controller = "systemd"
            DependsOn = "[nxPackage]httpd"
        }    

        nxFile apache2File {
            Ensure = "Present"
            Type = "File"
            DestinationPath = "/var/www/index.html"
            Contents = '<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Webpage on Linux</title>
<style type="text/css">
.barra {
    background-color: #3A539B;
    color: #FFFFFF;
    line-height: 20px;
    padding: 15px;
    padding-left: 35px;
    border-radius:25px;
}
body {
    font-family: Segoe UI Light,SegoeUILightWF,Arial,Sans-Serif;
}
</style>
</head>
<body>
<h2 class="barra">Este servidor Apache y la página web fueron instalados con PowerShell DSC</h3>
</body>
</html>'
        }
    }
}

Después de definir el bloque de código anterior, debemos ejecutar el siguiente comando para generar los archivos necesarios:

DSCLinuxWeb -OutputPath:"C:\DSCLinux"

Aplicar la configuración al servidor Linux

Para poder aplicar la configuración al servidor debemos ejecutar en el equipo Windows (cliente en esta oportunidad) lo siguiente:

$Node = "40.121.221.115"
$Credential = Get-Credential
$opt = New-CimSessionOption -UseSsl:$true -SkipCACheck:$true -SkipCNCheck:$true -SkipRevocationCheck:$true
$Sess=New-CimSession -Credential:$credential -ComputerName:$Node -Port:5986 -Authentication:basic -SessionOption:$opt -OperationTimeoutSec:90

Y por último debemos ejecutar lo siguiente para aplicar la configuración en el servidor Ubuntu:

Start-DscConfiguration -Path:"C:\DSCLinux" -CimSession:$Sess -Wait -Verbose

Si todo lo que hemos realizado, ha concluido correctamente vamos a poder abrir un navegador y acceder a la IP de nuestro servidor, para encontrarnos con lo siguiente:

PowerShell DSC en Linux: Web Server

Nuestro servidor web apache, con nuestro sitio funcional, todo gracias a PowerShell DSC.

Happy scripting!

Comments