Introducción:
Uno de los objetivos que persigue un administrador de sistemas es la automatización de procesos, es decir evitar realizar tareas manuales y repetitivas infinidad de veces.
En esta ocasión veremos una nueva forma de realizar instalaciones, actualizaciones de aplicaciones comunes en sistemas Windows.
Una de las herramientas que siempre ha podido utilizar el administrador de sistemas en entornos de Active Directory desde Windows Server 2000 es el despliegue de paquetes MSI (Microsoft Installer) utilizando directivas de grupo (GPO), el problema es que no todos los proveedores de software ofrecen paquetes MSI.
Otra forma es utilizar scripts, por ejemplo:
El problema es que el script, funciona hasta que el proveedor de software cambia algún parámetro del proceso de instalación y es necesario rehacer el script o descargarse un script nuevo.
Con PowerShell 5, disponemos de una nueva herramienta: OneGet, gestor de repositorios.
Recordemos que PowerShell 5 está incluida por defecto en Windows 10 y Windows Server 2016, también puede instalarse sobre: Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 7 SP1, Windows Server 2008 R2 SP1.
PowerShell 5, requiere .NET versión 4.5.
¿Cómo funciona?
PowerShell 5, integra OneGet, un gestor de repositorios.
Antes de nada, hemos de entender que todo y que el objetivo es el mismo, su funcionamiento interno a nivel técnico dista mucho de los repositorios Linux.
La forma en que el administrador añade o quita paquetes es muy similar al de los comandos yum (RHEL/CentOS) o apt-get (Debian/Ubuntu).
La forma en que el administrador añade o quita paquetes es muy similar al de los comandos yum (RHEL/CentOS) o apt-get (Debian/Ubuntu).
También es importante diferenciar entre un gestor de repositorios (OneGet) y un repositorio en si (Chocolatey).
Con estos tres puntos, entenderemos el concepto:
- OneGet, no es un repositorio en si, es un módulo de PowerShell 5, que realiza la función de gestor de repositorios.
- Chocolatey no es propiedad de Microsoft y es mantenido por la comunidad: Son repositorios, pero no contienen binarios (ficheros EXE), solo scripts con el sistema de paqueteria NuGet.
- Los binarios (ficheros EXE), residen igualmente en la URL del proveedor de software.
El proceso a nivel conceptual, es el siguiente:
- El proveedor de software, lanza al mercado una versión de su software, por ejemplo, WinRAR y libera su instalador (EXE, MSI, etc).
- Chocolatey desarrolla scripts para su instalación o desinstalación desatendida.
- Desde los clientes Windows: El módulo OneGet de PowerShell, tiene registrado el repositorio Chocolatey y si se procede a instalar el paquete, de forma transparente, se descarga el paquete de instalación/desinstalación y se procede a su ejecución desatendida.
* Directorio de scripts de aplicaciones instaladas utilizando el repositorio: Chocolatey
Laboratorio sobre Windows 10 y PowerShell 5:
A partir de una instalación limpia de Windows 10 RTM, abrimos una ventana de PowerShell como administrador:
Set-ExecutionPolicy RemoteSigned
#Gestores de paquetes instalados:
Get-PackageProvider
* Ejemplo de ejecución:
PS C:\> Get-PackageProvider| Select-Object Name
Name
----
msu
msi
Programs
PSModule
MSU: Repositorio de Microsoft Update.
MSI: Repositorio de paquetes MSI.
#Paquetes instalados
Get-Package
* Ejemplo de ejecución:
PS C:\> Get-Package |Select-Object Name
Name
----
VMware Tools
Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.6161
Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.4148
Actualización para Windows 10 para sistemas basados en x64 (KB3074678)
#Lista los proveedores compatibles
Find-package -provider Bootstrap
* Ejemplo de ejecución:
PS C:\> Find-package -provider Bootstrap |Select-Object Name,Version
Name Version
---- -------
nuget 2.8.5.127
chocolatey 2.8.5.130
*Bootstrap, proveedor que es capaz de ver otros proveedores.
#Busca un paquete (WinRAR) en el proveedor chocolatey
Find-package -provider chocolatey WinRAR
* Ejemplo de ejecución:
PS C:\> Find-package -provider chocolatey WinRAR
The provider 'chocolatey v2.8.5.130' is not installed.
chocolatey may be manually downloaded from https://oneget.org/ChocolateyPrototype-2.8.5.130.exe and installed.
Would you like PackageManagement to automatically download and install 'chocolatey' now?
[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es "S"): S
Name Version Source Summary
---- ------- ------ -------
winrar 5.20.1 chocolatey WinRAR is a powerful archive manager....
#Instalar paquete
Install-Package WinRAR
* Ejemplo de ejecución:
PS C:\> Install-Package WinRAR
The provider 'nuget v2.8.5.127' is not installed.
nuget may be manually downloaded from https://oneget.org/nuget-anycpu-2.8.5.127.exe and installed.
Would you like PackageManagement to automatically download and install 'nuget' now?
[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es "S"): N
ADVERTENCIA: Unable to find package provider 'NuGet'.
ADVERTENCIA: El proveedor de PackageManagement especificado 'NuGet' no está disponible.
The package(s) come from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[S] Sí [O] Sí a todo [N] No [T] No a todo [U] Suspender [?] Ayuda (el valor predeterminado es "N"): S
Name Version Source Summary
---- ------- ------ -------
winrar 5.20.1 chocolatey WinRAR is a powerful archive manager....
#Búsqueda GUI de paquetes disponibles dentro de chocolatey:
Find-Package -provider chocolatey| Out-Gridview
#Búsqueda múltiple command-line dentro de chocolatey:
* Ejemplo de ejecución:
PS C:\> Find-Package -Provider chocolatey -Name adobereader, WinRAR, VLC, skype, flashpla
Name Version Source Summary
---- ------- ------ -------
adobereader 2015.007.20033 chocolatey Adobe Reader - View and interact with PDF files
vlc 2.2.1.20150630 chocolatey VLC Media Player
winrar 5.20.1 chocolatey WinRAR is a powerful archive manager....
flashplayerplugin 18.0.0.232 chocolatey Adobe Flash Player Plugin for other browsers
skype 7.8.0.102 chocolatey Skype - VOIP
flashplayeractivex 18.0.0.232 chocolatey Adobe Flash Player ActiveX for Internet Explorer
#Instalación masiva:
* Ejemplo de ejecución:
Find-Package -Provider chocolatey -Name Adobereader, WinRAR, VLC, Skype | Install-Package -Force
#Desinstalar paquete:
* Ejemplo de ejecución:
Uninstall-Package WinRAR
¿Podemos instalar Chocolatey sin PowerShell 5, ni OneGet?
Es posible realizar una instalación manual:
https://github.com/chocolatey/choco/wiki/Installation
Muy bueno señor, dezconocia esta versión, debemos probarla. Por cierto , algo de SCCM
ResponderEliminar¡Me alegro que te haya gustado! Sobre SCCM, la verdad es que no lo toco mucho :-))
EliminarExcelente artículo.... Cuando trabajo sobre plataforma Windows empleo casi al 99% la magnifica herramienta Chocolatey que verdaderamente automatiza el trabajo
ResponderEliminarSaludos
¡Muchas gracias! Me alegro que te haya gustado.
EliminarUn saludo,
Xavi.