E se fosse più semplice e meno costoso di quel che sembra?

Ore 8.30, leggo sulla mia pagina Facebook un post di @Andrea Borruso pubblicato sulla pagina “Open Data Sicilia”, esordiva così: “Rilasciato il container docker, per mettere in piedi un portale opendata basato su CKAN, DCAT_AP-IT compliant by Marco Combetto”, ore 8.35, dal mio desktop clicco su “terminal”, un maschera simile a quella che molti possono aver aperto per il vecchio DOS, ed accedo sul mio server online, uno spazio comprato su una nota azienda a prezzi veramente molto bassi, digitando il mio buon ssh@indirizzo sono sul server, ore 8.37, digito:

  1. git clone https://github.com/italia/dati-ckan-docker.git 
  2. cd dati-ckan-docker 
  3. ./build_local.sh 
  4. docker-compose up -d 
  5. ./init.sh 


Ore 8.48
, sul web avevo su l’artiglieria pesante per iniziare a muovere i primi passi nel mondo degli open-data.

Un quarto di ora circa ed una spesa di sette euro. Ma cosa ho ottenuto? Una ‘cosa’ simile a questa: http://dati.comune.terlizzi.ba.it/, un sito internet o come si suol dire una web-application basata sul progetto CKAN (the Open Source Data Portal Software).

Avrei voluto esordire questo articolo con: “Per tutte le pubbliche amministrazioni che vogliono essere indicizzate sul portale nazionale degli open-data…” ma ho deciso di fare un passo indietro posizionandomi al punto di partenza tipico di molte realtà locali, di molti enti territoriali, dove, pur non mancando soggetti legati al mondo dell’informatica con elevate professionalità non si riesce proprio di dialogare sulla necessità di “mettere su” gli strumenti utili alla pubblicazione dei dataset, dei ‘set di dati’, per essere più potabili, di elenchi all’interno dei quali scorrono colonne in cui fanno bella mostra di se numeri o parole legate a tanti settori, un esempio: http://dati.comune.lecce.it/dataset, vi invito ad aprire il link e comprenderete voi stessi che cosa è un dataset e la loro importanza.

Da openEXPO, “CKAN è la piattaforma utilizzata per la catalogazione e l’esposizione dei dati, software open source che permette di catalogare i dataset e descriverli attraverso una serie di metadati che da un lato aiutano gli utenti a navigare tra le informazioni e dall’altro favoriscono l’indicizzazione degli stessi dataset sui motori di ricerca. Uno dei punti di forza del modello open-source adottato da CKAN sta soprattutto nelle comunità che si formano intorno a prodotti di questo tipo. In particolare la comunità CKAN, anche grazie al lavoro di animazione e promozione della piattaforma svolto dalla Open Knowledge Foundation, è probabilmente una delle più forti comunità internazionali che presidia il tema dei dati aperti”.

A questo punto bisognerebbe che i destinatari di queste parole avessero contezza del bisogno, noi diremmo della necessità di questi cataloghi, perché senza tale consapevolezza nessuno sforzo di rendere più semplice l’approccio agli strumenti tecnologici a disposizione potrà giovare.

Ma quali sono gli strumenti di cui si sta parlando? Effettivamente c’è tanta roba!

Al punto uno dei passaggi sopra elencati c’è il git clone: scrivere a terminale git significa andare a pescare su ‘serbatoi’ di codice che corrispondono al nome di repository, in cui sono stati memorizzati progetti che altri hanno realizzato; riferirsi ‘ad altri’ è importante perché mette in luce il fatto che i programmatori a cui ci riferiamo per l’appunto non sono legati a noi né da un punto di vista professionale né da un punto di vista personale, sono estranei che credono però nella necessità che quattro occhi siano meglio di due, che le intelligenze differiscono e che il codice debba essere aperto (open-source) per abbattere i costi dell’ignoranza e della presunzione che molti professionisti hanno rispetto alla materia, consentire a chi lo voglia di apportare modifiche, sacrificando la proprietà, creare una comunity di sviluppatori e praticare religiosamentel’attività di testing, seleziona qualitativamente l’apporto degli sviluppatori stressi, genera un circolo virtuoso che si riproduce come modello.

Nel caso specifico il serbatoio è https://github.com/italia/dati-ckan-docker.git e gli autori sono “quelli dell’open-data del sud”. [documentazione git → http://rogerdudler.github.io/git-guide/index.it.html].

Ora il gioco si fa duro, al punto tre devo lanciare ./build_local.sh, onestamente non lasciano indifferenti il punto (dot) prima dello slash e quell’sh finale, ma non c’è nulla di veramente complicato, il punto indica a “Linux” che il file (build_local.sh) si trova nella directory che abbiamo aperto al punto due (cd dati-ckan-docker), pertanto non abbiamo fatto altro che far eseguire un file (eseguibile) che risiede nella cartella e cosa c’è nel file? Due righe:

1) docker build -t daf-ckan-solr:1.0.0 ./solr   (crea l’immagine del servizio di indicizzazione)
2) docker build -t daf-ckan:1.0.0 ./ckan   (crea l’immagine di CKAN)

Non nascondo che all’inizio ‘formule magiche’ come queste procuravano anche in chi vi sta scrivendo forti ‘allucinazioni’ ma poi tutto è rientrato nella norma grazie a Dockers, ai containers, i contenitori. Cosa sono? Innanzi tutto una rivoluzione, uno strumento per eseguire comandi e servizi all’interno di uno spazio virtuale costituito a sua volta dalla sovrapposizione di immagini. Ovviamente non stiamo parlando di un programma di grafica, per immagini intendiamo [wiki]: ‘Un’immagine disco identificata come file immagine, è un file che contiene i dati, nella loro struttura tipica, di un dispositivo o supporto di memorizzazione dati, come ad esempio un hard-disk fisso o esterno, un cd/dvd, una chiavetta USB, una scheda di memoria’. In soldoni spiccioli un’immagine è un archivio che rappresenta pari-pari l’origine da cui è tratto. Si possono clonare interi sistemi operativi o programmi. L’uso prevalente è stato quello di dare in pasto ad una macchina virtuale (un pc simulato in tutto, anche per quanto riguarda la parte hardware, cpu virtuale, ram virtuale, hard-disk virtuale e così via) per dar vita ad un sistema autonomo e indipendente… a che pro? Tipo a far funzionare Linux su una macchina Windows o viceversa!

Prima di Docker a farla da padrone erano le macchine virtuali e le immagini, con una discreta ram, si collezionavano ambienti di sviluppo e test. Da non molto tempo sono sopraggiunti i ‘contenitori’ e molti hanno sposato la nuova concezione… ma altri no. Ma in cosa consistono? Cosa sono?
Rimanendo nel contesto della
virtualizzazione, un container è una sorta di ‘server virtualizzato’ rispetto al sistema operativo. Invece di creare una istanza virtuale di tutto ( processore, storage, connessioni di rete, sistema operativo…) come accade per le macchine virtuali, nell’approccioIT a containersi attiva una istanza virtuale solo dello spazio utente, quindi di fatto dell’ambiente in cui vengono eseguite le applicazioni. Tutto quello che sostiene tale ambiente – quindi dal sistema operativo “in giù” verso l’hardware – non è virtuale ma reale e condiviso fra tutti i container in esecuzione.

Ad oggi si discute su quale approccio sia meglio. Per proporre un uso massivo del sistema basato su Docker bisogna, a mio avviso, rimanere fermi su alcuni aspetti fondamentali e sostenere alcuni principi:

a) in primo luogo consentire anche ai meno esperti l’utilizzo dei servizi tipo CKAN e per far ciò la ‘proliferazioneche accompagna questo tipo di soluzione è un elemento essenziale. Non è tanto la standardizzazione, non significa solo partire tutti con la stessa dotazione, trovarsi al nastro di partenza dove tutti hanno un sistema collaudato e stabile di librerie sul proprio kernel Linux testato opportunamente senza lasciare alle simpatie dei sistemisti le librerie da utilizzare e le versioni, tutto ciò è possibile anche con le macchine virtuali, quanto per lo scambio di ‘ecosistemi’ che si aggregano ad altri GIÀ ESISTENTI senza ‘traumi’ per le stazioni riceventi che accatastano i contenitori in maniera fisiologica, non come dei corpi estranei mangia risorse.

b) non ritengo che la scelta di preferire i contenitori alle macchine virtuali sia legata solo alla facilità d’uso ed all’approccio più leggero ma piuttosto alla possibilità di avere su di una base differente, il sistema operativo già installato (difficile da sostituire in una P.A.) e qui depositare un numero non finito di servizi attivabili e ispezionabili senza dover aprire le macchine virtuali, se posso azzardare una similitudine è come cucinare, ho la mia cucina e nei pensili ciò che mi serve, con le macchine virtuali ho più cucine, una con il frigorifero ampio, un’altra con i fornelli potenti ecc..

c) il principio alla base del movimento degli open-data (ma anche dell’open-source o del free software) è si la grande fiducia nel prossimo ma la ferrea osservanza delle regole che garantiscono la diffusione della conoscenza, tale principio trova sostegno ogni qualvolta vengono eliminate quelle barriere che ne limitano la diffusione stessa.

Il gioco è fatto, con docker-compose up -d le immagini create prima diventano contenitori attivi e fruibili.

Ed in fine ./init.sh dà una “sistemata” ai servizi aggiuntivi di CKAN (inizializza molti moduli utili).

Un ultimo riferimento è al DCAT_AP-IT, anche perché tutto ciò si è detto e si è fatto proprio per poter utilizzare l’estensione di CKAN che “consente nell’ambito della promozione delle politiche di valorizzazione del patrimonio informativo pubblico nazionale e dell’attuazione della Direttiva relativa al riutilizzo dell’informazione del settore pubblico, tra l’altro, favorendo l’interoperabilità semantica di dati e servizi, con la collaborazione ed il supporto di un apposito Gruppo di Lavoro formato da amministrazioni centrali e locali, di definire il profilo nazionale dei metadati utili per descrivere i dati delle pubbliche amministrazioni, conforme alla specifica di DCAT-AP definita nell’ambito del programma ISA della Commissione Europea, il DCAT_AP-IT.