Docker, CKAN e DCAT-AP_IT insieme appassionatamente

TOOLS

Docker, CKAN e DCAT-AP_IT insieme appassionatamente

Di Daniele Mondello | 30 luglio 2017

5

Il Team per l’Italia Digitale ha rilasciato su Github un container Docker per utilizzare CKAN con relativi plugin per DCAT-AP_IT https://github.com/italia/dati-ckan-docker.
Scrivo questo post per cercare di chiarire alcuni concetti di base e spiegare chiaramente il concetto di virtualizzazione, cosa sono i container docker, cosa è CKAN, cosa sono i metadati,i profili DCAT-AP e DCAT-AP_IT e l’harvesting.

LA VIRTUALIZZAZIONE

Negli ultimi 15 anni una tecnica molto utilizzata in informatica è stata quella della virtualizzazione, tecnica che permette di utilizzare su una macchina virtuale (VM) un sistema operativo diverso da quello installato sul computer.

Con il termine di virtualizzazione si intende la possibilità di astrarre componenti hardware di un elaboratore cosi da renderli disponibili al software in forma di risorsa virtuale.

E’ cosi possibile installare sistemi operativi su hardware virtuale; l’insieme delle componenti hardware virtuali (Hard Disk, Memoria, processore, scheda di rete) prende il nome di Macchina Virtuale o VM.

La virtualizzazione avviene attraverso dei software denominati Hypervisor; tra i piu famosi ed i piu semplici ci sono vmware (https://vmware.com) e virtualbox ( https://virtualbox.org ).

Per farla breve se sul vostro computer windows volete provare, un software di grafica come Blender che funziona solo su linux dovrete:

1) Installare sul vostro computer virtualbox

2) Creare una macchina virtuale assegnandogli le risorse (ram, hd, etc)

3) installare su questa macchina virtuale una distribuzione linux

4) installare su linux virtualizzato il software Blender

Finito! da questo momento in poi quando vorrete utilizzare blender potrete accendere una macchina virtuale con linux dentro il vostro computer windows.

DOCKER E I SUOI CONTAINER

Docker è un passo avanti rispetto al concetto di virtualizzazione, perchè permette di non virtualizzare l’intero sistema operativo ma di impacchettare solamente le librerie e il software che ci servono basandosi su containers.

Quindi mentre nella virtualizzazione classica sono virtualizzati programmi e kernel del sistema operativo (il kernel è il nucleo di un sistema operativo che fornisce ai processi in esecuzione accesso all’hardware) nella virtualizzazione per container sono virtualizzati solo software e librerie

Un container NON E’ UNA MACCHINA VIRTUALE ma un’applicazione isolata con le sue dipendenze eseguita in un namespace separato; nel kernel linux, un namespace è uno spazio isolato e virtualizzato delle risorse di sistema (network namespace, file system, users) per una collezione di processi. Essendo isolato i processi agiscono all’interno di un container e non agiscono all’esterno sul Sistema Operativo principale.

Il Docker engine permette ai container di avere tutto il substrato che serve per funzionare (lo stesso kernel); diversi sono i vantaggi rispetto alle vm classiche , i container sono più “leggeri” delle macchine virtuali, possono essere avviati in pochi secondi, richiedono poche risorse e sono isolati.

Di rilevante importanza è il registry di docker, una piattaforma in cloud dove è possibile caricare, scaricare e condividere le immagini dei vari container. Quella ufficiale è https://hub.docker.com/

Per farla breve: se volete utilizzare un container su mac basterà:

1. Installare sul vostro mac Docker (https://www.docker.com) ed avviarlo

2. Installare kitematic ( https://kitematic.com ) che fornisce un interfaccia grafica per navigare tra le centinaia di migliaia di immagini dell registry

3. Avviare kitematic e scegliere l’immagine dalla quale si vuole creare il container cliccando su “create”

Alla fine del download il container si avvierà automaticamente e saranno fornite le istruzioni per collegarsi al container per utilizzare l’applicazione.

A questo punto è doveroso un chiarimento tecnico. Docker sfrutta vecchie caratteristiche del kernel linux che permettono di far girare dei software in maniera separata e protetta, cosi se una applicazione si schianta non provoca problemi agli altri o se vogliamo possiamo assegnare alla stessa risorse limitate.

Nella versione 2.24.19 del kernel Linux vennero introdotti i namespaces che permettono di “etichettare” i processi cosi da differenziarli dagli altri, successivamente nella versione 2.6.24 vennero introdottti i Cgroups che permettono la gestione delle risorse legata ai processi cosi che un gruppo di processi non prenda maggiori risorse rispetto a quelle a lui assegnate, infine, nel 2013 fu introdotta Libcontainer scritta dal team di Docker che astrando namespaces e Cgroups permette di gestire la virtualizzazione a container.

LA PIATTAFORMA CKAN

CKAN (Comprehensive Knowledge Archive Network) è la piattaforma leader mondiale per i portali di Open Dataed è uno strumento che ne permette la gestione, la pubblicazione e la ricerca.

È sviluppato in Python, ha una licenza di tipo Open Source ed è promosso dalla Open Knowledge Foundation, una fondazione che promuove la diffusione delle idee, offrendo supporto e strumenti per la condivisione della conoscenza.

CKAN ( https://ckan.org )è usato da governi, organizzazioni e gruppi di utenti in tutto il mondo per gestire una vasta serie di portali di dati di enti ufficiali e di comunità, tra cui portali per governi locali, nazionali e internazionali.

La grande forza di CKAN sta nella sua semplicità; infatti il suo utilizzo è semplice sia per gli utilizzatori che per gli operatoiri che devono inserire i dataset grazie a workflow semplificato che per l’utente finale ch li deve ricercare. Molte sono le caratteristiche che rendono unico CKAN tra le principali, a mio parere, ci sono:

  • gestire, pubblicare, ricercare dataset e documenti in formato aperto;
  • visualizzare dati sia in tabelle che grafici e mappe;
  • storico delle operazioni svolte sui dataset per operatore;
  • possibilità di workflow minimo sui dataset;
  • API per gestire e interrogare dei dataset;
  • integrazione con portali in wordpress.
  • Utilizzo di Plugin di terze parti per aumentarne le potenzialità

Per farla breve: CKAN è un software Open Source scritto in Python che permette facilmente di mettere su un portale web per gestire e catalogare dataset gestendo ruoli profili etc. E’ possibile potenziarlo usando plugin.

METADATAZIONE DCAT-AP E DCAT-AP_IT

Cosa sono i metadati? Possiamo definirli come dati di 2°livello che servono descrivere e classificare altri dati o contenuti digitali.

L’obiettivo de metadati è descrivere l’informazione primaria, per organizzarla e semplificarla; in particolar modo i metadati sono importanti quando siamo dinanzi a repository di contenuti. Per semplificare possiamo associare l’’idea dei metadati all’utilizzo dei tag che ci permettono di “taggare” elementi, per identificarli.

DCAT-AP (Data Catalog Vocabulary — Application Profile ) è una specifica per i portali di dati europei basata sul vocabolario del catalogo dei dati del W3C (DCAT https://www.w3.org/TR/vocab-dcat/ ) per la descrizione dei dataset del settore della Pubblica Amministrzione in Europa tramite l’utilizzo di metadati. La specifica è stata rilasciata nel novembre 2015 e definita nell’ambito del programma ISA (Interoperability Solutions for European Public Administrations) della Commissione Europea

L’AGID (Agenzia per l’Italia digitale) ha prodotto il profilo italiano del DCAT-AP denominato DCAT-AP_IT il 26 aprile dopo consultazione pubblica.(http://www.dati.gov.it/sites/default/files/DCAT-AP_IT_v10.pdf).

Il 5 Aprile del 2017 è stata rilasciata la Release 1.0 delle “linee guida per i cataloghi dati” che presentano le linee guida per l’alimentazione e gestione di cataloghi dati secondo il profilo nazionale di metadatazione DCAT-AP_IT, così come raccomandato nelle linee guida per la valorizzazione del patrimonio informativo pubblico (anno 2016). Le linee guida forniscono indicazioni forniscono una descrizione degli elementi principali (e proprietà) del profilo di metadazione con le relative proprietà.

Particolarmente interessante è la tabella a pagina 6 e 7 che riporta l’elenco delle classi e proprietà definite nel profilo italiano con il relativo livello di obbligatorietà; in particolare, “M” indica che la classe è obbligatoria, “R” indica che è raccomandata e “O” indica che è opzionale.

Su CKAN si possono installare plugin per gestire DCAT-AP DCAT-AP_IT.

Per farla breve: se una Pubblica Amministrazione vuole rilasciare un dataset sul proprio portale deve seguire delle regole di metadazione secondo il profilo DCAT-AP_IT che a sua volta è una estenzione del DCAT-AP europeo per utilizzare i metadati corretti.

HARVESTING

L’Harvesting è una tecnica che permette di raccogliere le informazioni relative agli archivi pubblicati su singoli nodi tramite metadati e renderli disponibili all’utenza su portali “centrali”. Quindi se un piccolo comune produce un dataset e lo pubblica sul suo portale Open Data utilizzando i metadati del profilo DCAT-AP_IT automaticamente questo dataset sarà disponibilie su altri portali Nazionali ed Europei.
CKAN permette di effettuare l’harvesting su altri CKAN e a sua volta puo mettere a disposizione i propri dataset per l’harvesting di altri.

Per farla breve tramite la tecnica dell’ harvesting un dataset metadatato correttamente, presente su un portale CKAN, può essere automaticamente indicizzato e ricercabile su un altro portale o che all’interno di un nostro portale CKAN siano ricercabili dataset non inseriti da noi ma presenti su altri portali CKAN ed automaticamente diventati patrimonio del nostro portale.

CONCLUSIONI

Ora che il team digitale ha rilasciato un container ufficiale potrete facilmente:

  1. Installare docker (https://www.docker.com)
  2. Scaricare e installare il container del team digitale con CKAN e plugin per DCAT-AP_IT https://github.com/italia/dati-ckan-docker (ci sono tutte le informazioni per installarlo a riga di comando)
  3. Caricare un dataset e metadatarlo secondo le regole DCAT-AP_IT
  4. Fare Harvesting su altri portali o permetterlo ad altri di farlo sui vostri dataset.

RINGRAZIAMENTI

Per questo post devo ringraziare diverse perosone con il quale mi sono confrontato negli ultimi mesi: Marcello Vetro con il quale abbiamo studiato Docker ma che ormai movimenta piu container lui che l’ente portuale di Palermo; Fabio Catania che è impazzito per installare su un CKAN dockerizzato il DCAT-AP_IT prima che venisse rilasciato dal team digitale; Andrea Borruso, Davide Taibi e Ciro Spataro con il quale ho condiviso dubbi e incertezze affidandomi alla loro esperienza.