Windows 2012R2 (y Windows Management Framework 4.0) incluyen una funcionalidad muy interesante llamada DSC (Desired State Configuration), que nos permitirá de una forma similar a otras soluciones (Puppet, Chef…) tener la configuración de forma declarativa.

Los pasos para montar el Pull Server son los siguientes:

Abrir una consola de Powershell en el servidor donde vamos a alojar la configuración y ejecutar los siguientes comandos:

Add-WindowsFeature Dsc-Service

Una vez hecho,

PS C:Usersadministrator> New-Item -Type Directory C:inetpubwwwrootDSCPullServer Directory: C:inetpubwwwroot Mode LastWriteTime Length Name —- ————- —— —- d—- 3/7/2014 1:45 PM DSCPullServer

PS C:Usersadministrator> $origen=”C:WindowsSystem32WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer” PS C:Usersadministrator> $destino=”C:inetpubwwwrootDSCPullserver” PS C:Usersadministrator> Copy-Item $origenGlobal.asax $destino PS C:Usersadministrator> copy-item $origenPSDSCPullServer.mof $destino PS C:Usersadministrator> copy-item $origenPSDSCPullServer.svc $destino PS C:Usersadministrator> copy-item $origenPSDSCPullServer.xml $destino PS C:Usersadministrator> copy-item $origenPSDSCPullServer.config $destinoweb.config PS C:Usersadministrator> ls $destino Directory: C:inetpubwwwrootDSCPullserver Mode LastWriteTime Length Name —- ————- —— —- -a— 7/1/2013 6:49 PM 141 Global.asax -a— 6/21/2013 9:50 AM 525 PSDSCPullServer.mof -a— 6/18/2013 2:25 PM 335 PSDSCPullServer.svc -a— 6/18/2013 2:25 PM 502 PSDSCPullServer.xml -a— 7/1/2013 6:49 PM 3065 web.config

PS C:Usersadministrator> new-item -Type Directory $destinobin Directory: C:inetpubwwwrootDSCPullserver Mode LastWriteTime Length Name —- ————- —— —- d—- 3/7/2014 2:13 PM bin

 

PS C:Usersadministrator> import-module WebAdministration PS C:Usersadministrator> cd IIS: PS IIS:> new-item AppPoolsDSCAppPool

Name State Applications —- —– ———— DSCAppPool Started PS IIS:> new-item IIS:SitesDSCPullServer -bindings @{protocol=”http”;bindingInformation=”:80:*”} -physicalPath C:inetp ubwwwrootDSCPullServer PS C:> copy-item $pshome/modules//psdesiredstateconfiguration/pullserver/Microsoft.Powershell.DesiredStateConfiguration .Service.dll $destinobin PS IIS:> cd C: PS C:> $appcmd = “$env:windirsystem32inetsrvappcmd.exe” PS C:> & $appCmd unlock config -section:access Unlocked section “system.webServer/security/access” at configuration path “MACHINE/WEBROOT/APPHOST”. PS C:> & $appCmd unlock config -section:anonymousAuthentication Unlocked section “system.webServer/security/authentication/anonymousAuthentication” at configuration path “MACHINE/WEBRO OT/APPHOST”. PS C:> & $appCmd unlock config -section:basicAuthentication Unlocked section “system.webServer/security/authentication/basicAuthentication” at configuration path “MACHINE/WEBROOT/A PPHOST”. PS C:> & $appCmd unlock config -section:windowsAuthentication Unlocked section “system.webServer/security/authentication/windowsAuthentication” at configuration path “MACHINE/WEBROOT /APPHOST”. PS C:> Copy-Item $origenDevices.mdb ‘C:Program FilesWindowsPowerShellDscService’ PS C:> notepad $destinoweb.config

Añadimos en la parte de App settings lo siguiente <add key=”dbprovider” value=”System.Data.OleDb” /> <add key=”dbconnectionstr” value=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;” /> <add key=”ConfigurationPath” value=”C:Program FilesWindowsPowerShellDscServiceConfiguration” /> <add key=”ModulePath” value=”C:Program FilesWindowsPowerShellDscServiceModules” />

Arrancamos el website y probamos en http://localhost/psdscpullserver.svc/

Con esto tendremos la primera parte del despliegue hecho, el servidor DSC.