Rilasciato Ansible 3.0.0, che si sdoppia

L’automazione e la gestione di un gran numero di macchine tramite codice (quindi un software) sono – ormai da qualche anno – i temi centrali dei sistemisti, di ogni ordine e grado.

In questo ambito Ansible è sicuramente lo strumento che va per la maggiore, che sia usato in esclusiva o accoppiato ad altri con compiti simili (come Chef o Puppet). Già l’anno scorso un sondaggio lo dava come il più usato, e sicuramente la tendenza è quella di incrementare questo vantaggio.

Sul blog di Red Hat di Ansible (che ha acquistato il progetto nel 2015) il 18 febbraio è apparso l’annuncio del rilascio della versione 3.0.0.
Questa versione è basata sulla stessa versione 2.10, ovvero l’ultima stabile (sebbene per gli utenti Red Hat l’ultima disponibile sia la 2.9), di cui rende ufficiale e definitiva la più grande novità: le collection.

L’estrema flessibilità e la grande facilità di estensione sono state la chiave di un così diffuso utilizzo, che ha portato anche ad un rapido sviluppo. E proprio per queste ragioni si è reso necessario separare lo sviluppo (e l’iter di approvazione) delle funzioni base, portato avanti da Red Hat, da quello delle estensioni, proposte dagli utenti (la community).
Fino alla versione 2.9 tutto il codice veniva integrato in un unico pacchetto, uno strumento monolitico che se da un lato garantisce la presenza di tutte le funzioni, dall’altro ne rende complessa e lenta la manutenzione.
Meglio quindi rendere il tutto modulare, sia per assicurare un minor carico di lavoro sui manutentori, sia per permettere una più rapida adozione (o correzione) delle funzioni aggiuntive.

Le collection sono proprio questi moduli: librerie che permettono di avere funzioni aggiuntive rispetto a quelle base.
Parte del lavoro sulla versione 2.10 è stato individuare quale fosse il cuore delle funzioni necessarie e trasformare in collection tutto il resto. Visto che questo lavoro è (forse) terminato, il passo successivo è distribuire il core come pacchetto indipendente, lasciando le l’aggiunta delle collection a libera iniziativa degli utenti.

La divisione permette di proporre il pacchetto “Ansible Core”, con solo il cuore, e un pacchetto “Ansible Collection”, con le sole estensioni. A questi, se ne aggiunge un terzo che non è altro che la somma dei primi due, ed è quest’ultimo pacchetto ad essere stato rilasciato: “Ansible community package” 3.0.0. “Ansible Core” continuerà a mantenere la numerazione attuale, ovvero 2.10.

A questo punto il gioco di numerazione di versioni diventa alquanto divertente: all’aggiornamento della minor di “Ansible Core” (anche se si chiamerà così solo nella prossima release, la 2.11, mentre per ora è “ansible-base”) corrisponderà il rilascio di una nuova major di “Ansible community package” 4.0.0. Facile, no?

Nell’area Questions and Answers (Domande e Rrisposte) relativa all’annuncio si descrive meglio il meccanismo, e si specifica anche la cadenza prevista delle nuove versioni:

  • 3 settimane per le minor (3.1.0, 3.2.0, …), che riguarderanno quindi solo la parte delle estensioni;
  • 6 mesi per le major (4.0.0, 5.0.0, …), che riguarderà quindi il pacchetto “core”.

Ultima nota, se vi interessa: la prima major release prevista, la 4.0.0, arriverà leggermente in anticipo, a maggio 2021.

Se la ristrutturazione dell’architettura si è resa necessaria per garantire una maggior facilità di estensione, con il lieto risvolto di dare a chiunque la possibilità di pubblicare un’estensione, la cadenza delle versioni a noi pare troppo ravvicinata. Verremo sicuramente smentiti, e sicuramente si tratta della solita corsa al rialzo (la stessa per cui Firefox in pochi anni è passata dalla versione 4 alla 86), ma un cambiamento anche solo potenzialmente tanto rapido pone dei rischi agli utilizzatori. In particolare che qualche pezzo di codice, valido per la versione precedente, improvvisamente non lo sia più per la successiva.
Per evitare questi rischi, gli utilizzatori potrebbero decidere di non aggiornare il software (e sapete quanto questa prospettiva non ci piaccia), oppure dovranno verificare tutto il codice a disposizione molto spesso. Che, sebbene non sia una pratica sbagliata in principio, è una pratica che richiede molto lavoro.

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: