Chocolatey è un gestore di pacchetti concettualmente molto simile ad APT o YUM in ambiente Linux, che permette quindi di creare, aggiornare, distribuire o rimuovere pacchetti software in modo centralizzato e automatizzato.

Alla base del suo funzionamento ci sono due macro-piattaforme: NuGet e Windows PowerShell. La prima è a sua volta un package manager per .NET, che consente di sviluppare e distribuire pacchetti software sotto forma di librerie DLL, mentre PowerShell è la nota shell integrata negli ambienti Microsoft Windows. Disponibile sia tramite interfaccia a linea di comando, che con una GUI dedicata, Chocolatey nasce come progetto open source disponibile con tre modelli di licensing: gratuito, Pro e Business a cui si aggiungono i piani MSP e Architect per utilizzi specifici.

Nel primo caso si tratta della versione con meno funzionalità e priva di supporto ufficiale, limitata – ad esempio – nel fatto di non poter creare propri pacchetti, convertirne di esistenti o avere una console per la gestione centralizzata. La versione Pro è limitata all’uso su massimo 8 macchine ed è escluso l’utilizzo in contesti aziendali: il prezzo è di 96 dollari l’anno e comprende funzioni evolute come il Package Builder grafico e il supporto ufficiale via email. La licenza Business è decisamente più articolata ed organizzata in pacchetti il cui prezzo varia a seconda del numero di macchine su cui Chocolatey verrà distribuito. Naturalmente non ha limitazioni a livello di funzionalità ed è previsto il supporto completo. A seguire si trovano due edizioni per contesti particolari, come la MSP, distribuita con un minimo di 200 licenze, e la Architect. Quest’ultima valida per utilizzi di sviluppo e ad un prezzo molto contenuto. (tabella comparativa QUI).


Chocolatey in azione

Come gestore di pacchetti, Chocolatey integra le funzioni principali che ci si aspetta da una piattaforma di questo tipo: installazione, aggiornamento, gestione delle dipendenze, disinstallazione automatizzata e auditing. È inoltre possibile avere un proprio server dedicato a questo scopo, che ospiti anche il repository dei pacchetti. 
L’installazione di Chocolatey non richiede caratteristiche particolarmente evolute, è sufficiente un sistema Windows 7 o successivo (equivalente a Windows Server 2003 o successivo), PowerShell 2 o superiori e .NET almeno versione 4.x (se non presente, verrà installato automaticamente). L’installer è un semplice script che si può copiare e incollare nel prompt dei comandi (con privilegi amministrativi), oppure in una finestra PowerShell (disponibile QUI) e una volta terminata l’installazione, è possibile provarne subito il funzionamento digitando choco o choco -?. Se l’installazione via internet non dovesse funzionare, è disponibile un apposito pacchetto offline.


choco gui install


Da sottolineare che l’installazione di base riguarda la versione trial, nel caso di acquisto della licenza è necessario effettuare una specifica procedura di attivazione. Al variare delle versioni, è possibile aggiornare la piattaforma con il semplice comando choco upgrade chocolatey, esattamente nello stesso modo utilizzato per gli altri pacchetti. Una volta reso operativo l’ambiente, l’installazione di pacchetti si può lanciare utilizzando il semplice comando choco install packagename. Naturalmente sono disponibili una vasta serie di opzioni aggiuntive che si possono passare come parametro all’installer, ad esempio la cartella di installazione se diversa da quella di default. 

Similmente a quanto accade in ambiente Linux, i parametri aggiuntivi si possono inserire utilizzando le combinazioni di caratteri: -, / o – a seconda del tipo di parametro. Ad esempio le opzioni a singolo carattere non devono utilizzare il comando /. Altri caratteri con funzioni specifiche sono il segno di uguale o diverso per valutare le opzioni, così come -d per il debug, -v per la descrizione estesa e -y per la conferma automatica.


Passaggi chiave nell’utilizzo di Chocolatey

Le tre fasi attraverso cui i pacchetti possono passare sono: installazione, aggiornamento e rimozione. Andiamo quindi a vedere nel dettaglio come vengono gestiti questi passaggi.

Abbiamo visto in precedenza come Chocolatey sia basato sull’utilizzo di NuGet, è proprio grazie a questa piattaforma che può iniziare l’installazione. NuGet viene utilizzato per ottenere dalla sorgente il pacchetto che si desidera installare: questo può avvenire da una cartella locale, un percorso di rete o un repository su Internet, tramite HTTP o HTTPS. Come avviene in ambito Linux, i Source Repository possono essere aggiunti o rimossi manualmente a seconda delle necessità (ad esempio se si dispone di un proprio). Il percorso di installazione standard è ChocolateyInstall\lib\ e non è configurabile in quanto viene utilizzato per tenere traccia della vita del pacchetto per fini di aggiornamento o rimozione. Chocolatey è quindi in grado di appurare se il pacchetto richiede delle dipendenze e crea uno snapshot del registro di sistema prima e dopo l’installazione, in modo da poter creare un apposito file dove salvare le informazioni per la corretta disinstallazione.

Per finire, il software controlla la presenza di file eseguibili nella cartella di lavoro e genera apposite librerie (chiamate Shims e che servono per tradurre le chiamate API e cambiare/tradurre gli argomenti passati all’occorrenza) che vengono quindi rese disponibili nel pacchetto finale nella cartella \bin.

L’upgrade dei pacchetti avviene in modo simile a quanto accade durante l’installazione: Chocolatey infatti crea uno snapshot della cartella relativa al pacchetto, prima di tentare l’aggiornamento, in modo da consentire un rollback completo alla situazione di partenza. Bisogna però prestare attenzione perché il salvataggio viene fatto solo per la cartella relativa al pacchetto, di conseguenza eventuali integrazioni o sviluppi esterni a quest’ultima saranno persi.

Infine la rimozione avviene lanciando lo script automatizzato contenuto nella cartella del pacchetto, previo backup della stessa. Al termine della procedura, se la cartella è rimasta vuota, viene anch’essa rimossa.


Di seguito la sintassi dei comandi da utilizzare nelle tre situazioni:

choco install <pkg|package.config> [<options/switches>]
choco upgrade <pkg|all> [<options/switches>]
choco unistall <pkg|all> [<options/switches>] oppure cunist <pkg|all> [<options/switches>]

l’aggiunta dei repository invece si realizza con il comando

choco source [list]|add|remove|disable|enable [<options/switches>]

Chocolatey può anche lavorare con software già installati sulla macchina, è infatti in grado sia di integrarsi con l’installazione presente, sia di essere utilizzato per installare uno specifico pacchetto senza agire sul suo omologo già presente nel sistema. Naturalmente non sempre è possibile sapere a priori il nome esatto del pacchetto che ci serve installare, in questi casi è molto utile il comando search che permette di ricercare sia in locale che in remoto. Le tre modalità di utilizzo principale sono:

choco search <filter> [<options/switches>]
choco list <filter> [<options/switches>] o l’alternativa compatta clist <filter> [<options/switches>]


Creazione dei pacchetti

Nel contesto di Chocolatey, un pacchetto è un file nupkg, compilato utilizzando NuSpec (oppure un file zip) che è completamente autonomo dal punto di vista dei suoi metadati, dipendenze e versioning. Si tratta quindi di versioni evolute dei semplici pacchetti NuGet di cui abbiamo parlato in precedenza, in quanto contengono una serie di informazioni aggiuntive necessarie a Chocolatey per funzionare correttamente.
Prima di tutto è necessario definire se si intende realizzare un pacchetto auto-contenuto, oppure uno script di automazione: nel primo caso sarà più facile e sicuro mantenere il pacchetto nel tempo, naturalmente previa verifica dei diritti necessari per la distribuzione del contenuto stesso. In alternativa si può sfruttare PowerShell per l’esecuzione di script di automazione. Il requisito minimo per poter iniziare a creare pacchetti propri è la presenza si NuSpec, ovvero di appositi file XML che descrivono il pacchetto stesso e contengono, ad esempio, la definizione delle dipendenze.

Il comando di base è choco new <package_name>

Un breve esempio di creazione di un pacchetto con sorgente HTTP può essere:

$packageName = ‘gurupackage’
$fileType = ‘exe’
$url = ‘http://download.guruadvisor.net/packages/gurupackage.exe’
$silentArgs = ‘-y’
Install-ChocolateyPackage $packageName $fileType $silentArgs $url

Nella versione For Business è disponibile il Package Builder con interfaccia grafica, uno strumento che semplifica di molto la creazione dei pacchetti. È infatti sufficiente selezionare il file eseguibile o zip interessato e selezionare “Crea pacchetto Chocolatey”, con relativa cartella di output.


choco gui


Per concludere, Chocolatey si integra con numerose piattaforme di automazione come Ansible, Boxstarter, Chef, PowerShell DSC, PowerShell PackageManagement e altre che si possono trovare QUI

L'autore

Lorenzo Bedin

Laureato in Ingegneria delle Telecomunicazioni, svolge l'attività di libero professionista come consulente IT, dopo un periodo di formazione e esperienza in azienda nel ruolo di sistemista Windows e Linux. Si occupa di soluzioni hardware, siti web e virtualizzazione.

banner5

fb icon evo twitter icon evo

Parola del giorno

Nel campo dell'informatca, il termine Piggybacking fa riferimento a situazioni dove una terza parte non autorizzata ottiene l'accesso a sistemi...

>

Hold Down Timer è una tecnica utilizzata dai router di rete. Quando un nodo riceve la notifica di un altro...

>

La Blockchain è un processo in cui un insieme di soggetti (o nodi) condivide risorse informatiche e di calcolo, per...

>

Il termine Cloud Orchestration descrive le tecniche di automazione di processi in cloud, al fine di raggiungere determinati obiettivi. A differenza...

>

L'acronimo IRQ (Interrupt Request) indica un segnale asincrono inviato al processore da un determinato dispositivo, ad indicare che è richiesta di...

>
Leggi anche le altre...

Download del giorno

Fiddler

Fiddler è un server proxy che può girare in locale per consentire il debug delle applicazioni e il...

>

Adapter Watch

Adapter Watch è uno strumento che permette di visualizzare un riepilogo completo e dettagliato delle informazioni riguardanti una determinata...

>

DNS DataView

DNS Lookup  è un tool a interfaccia grafica per effettuare il lookup DNS dal proprio PC, sfruttando i...

>

SolarWinds Traceroute NG

SolarWinds Traceroute NG è un tool a linea di comando per effettuare traceroute avanzati in ambiente Windows...

>

Network Inventory Advisor

Network Inventory Advisor  è uno strumento che permette di scansionare la rete e acquisire informazioni riguardanti tutti i...

>
Tutti i Download del giorno...

Archivio numeri

  • GURU advisor: numero 17 - gennaio 2018

    GURU advisor: numero 17 - gennaio 2018

  • GURU advisor: numero 16 - ottobre 2017

    GURU advisor: numero 16 - ottobre 2017

  • GURU advisor: numero 15 - luglio 2017

    GURU advisor: numero 15 - luglio 2017

  • GURU advisor: numero 14 - maggio 2017

    GURU advisor: numero 14 - maggio 2017

  • GURU advisor: numero 13 -  marzo 2017

    GURU advisor: numero 13 - marzo 2017

  • GURU advisor: numero 12 -  gennaio 2017

    GURU advisor: numero 12 - gennaio 2017

  • GURU advisor: numero 11 -  ottobre 2016

    GURU advisor: numero 11 - ottobre 2016

  • GURU advisor: numero 10 - 8 agosto 2016

    GURU advisor: numero 10 - 8 agosto 2016

  • 1
  • 2
  • 3
  • Teslacrypt: rilasciata la chiave

    Gli sviluppatori del temuto ransomware TeslaCrypt hanno deciso di terminare il progetto di diffusione e sviluppo e consegnare al pubblico la chiave universale per decifrare i file. Read More
  • Proxmox 4.1 sfida vSphere

    Proxmox VE (da qui in avanti semplicemente Proxmox) è basato sul sistema operativo Debian e porta con sé vantaggi e svantaggi di questa nota distribuzione Linux: un sistema operativo stabile, sicuro, diffuso e ben collaudato. Read More
  • Malware: risvolti legali

    tutti i virus e in particolare i più recenti Ransomware, che rubano i vostri dati e vi chiedono un riscatto, violano la legge. Vediamo insieme come comportarsi, per capire anche se e quando bisogna sporgere denuncia. Read More
  • 1