Virtualizzazione e provisioning senza sforzo

Vagrant Virtualization Box

Vagrant Virtualization Box

La virtualizzazione ha sicuramente cambiato il modo di lavorare e di pensare alla gestione dei sistemi informatici aziendali o dei service provider, ed il cloud ha aggiunto un’ulteriore strato, sia di liberta’, ma anche di complicazione in piu’, nella gestione dei nuovi sistemi ad alta affidabilita’ che devono essere in grado di scalare nel minor tempo possibile ecc….

Queste esigenze hanno portato alla nascita di innumerevoli sistemi di virtualizzazione, tra i piu’ conosciuti sicuramente ci sono Xen, Vmware, Kvm, Virtuozzo, Virtualbox, Openvz …..! che per certi versi si trasformano in un incubo per gli amministratori di sistema, costretti ad avere diversi ambienti di gestione delle VM su diversi sistemi e con molteplici file di configurazione da settare.

Infatti quando ci troviamo ad amministrare un ambiente cloud con molte macchine, il rischio di dover aggiungere una macchina in più e doverla successivamente configurare in poco tempo per il deploy e la messa in produzione insieme a tutte le altre è molto alto. In più, se siamo all’interno di un’architettura che deve scalare rapidamente per rispondere in modo agile alle esigenze degli utenti (e chiaramente dell’azienda), dover attendere l’installazione del sistema operativo e poi del software non è certamente divertente. Per tutte queste esigenze, Vagrant potrebbe risultare la giusta soluzione che può semplificarci la vita, permettendoci di aggirare tutte queste “rogne”

Vagrant è un gestore di macchine virtuali che può usare parecchi hypervisor tra cui VirtualBox, il predefinito, ma anche VMWare, Xen e KVM. Attraverso questo software infatti potremo basarci su una struttura di base comune a tutte le macchine, che contiene il sistema operativo (anche se poi vedremo come personalizzare questa alberatura), e mantenere degli step comuni nella configurazione delle nostre istanze virtuali, per poi dedicarci solo alle rifiniture, risparmiando tantissimo tempo grazie alle capacità di elaborazione dei datacenter che abbiamo in-house o magari in cloud.

Per inizializzare il nostro primo progetto Vagrant, abbiamo solo bisogno di spostarci in una directory vuota e dare il comando (avendo già installato il software):

Installazione Vagrant

### Verificare di aver installati i seguenti pacchetti : rubygems ruby1.9.1-dev virtualbox-4.2 (o superiori)
# sudo apt-get install vagrant
# vagrant plugin install vagrant-vbguest

Le Box di Vagrant
Il primo concetto fondamentale da fare nostro, per quanto riguarda Vagrant, è quello del concetto di Box. Una Box per quanto riguarda questo ambiente di virtualizzazione infatti è una vera e propria scatola che contiene il sistema operativo, e tutto quello di cui abbiamo bisogno come i software di base ed ogni loro configurazione di base. Al punto di partenza abbiamo delle Box rese disponibili dai server di Vagrant, ma possiamo tranquillamente aggiungerne altre: tutto quello di cui abbiamo bisogno è un po’ di fantasia coi nomi, e di conoscere l’URL remoto tramite il quale scaricare la Box (ne trovate parecchie già fatte su Vagrantbox.es oppure su Hasicorp), con questa sintassi da riga di comando.

# vagrant init
# vagrant box add name url

che, traducendolo con un esempio reale:

# vagrant box add precise32 http://files.vagrantup.com/precise32.box

Che non farà altro che aggiungere al nostro progetto Vagrant una Box Ubuntu 12.04 a 32 bit.

Il Vagrantfile
Una volta scaricata la nostra Box di partenza, possiamo cominciare a configurare il nostro progetto Vagrant tramite il Vagrantfile che abbiamo a disposizione e che si presenta essenzialmente come un file Ruby con vari namespace, ma niente paura, non è necessario conoscere direttamente Ruby per la configurazione (anche se può aiutare), ed è possibile fare riferimento alla documentazione per conoscere i vari prefissi e le possibilità che abbiamo a disposizione. Ogni volta che eseguiamo un comando Vagrant, il Vagrantfile viene cercato in tutte le directory di livello superiore nell’albero.

Il file può avere grossomodo un aspetto del genere:

Esempio di un cluster di 7 Boxes. Preso da:
### https://github.com/patrickdlee/vagrant-examples

domain   = 'example.com'
 
nodes = [
  { :hostname => 'ex7proxy',   :ip => '192.168.0.42', :box => 'precise32' },
  { :hostname => 'ex7db',      :ip => '192.168.0.43', :box => 'precise32' },
  { :hostname => 'ex7web1',    :ip => '192.168.0.44', :box => 'precise32' },
  { :hostname => 'ex7web2',    :ip => '192.168.0.45', :box => 'precise32' },
  { :hostname => 'ex7static1', :ip => '192.168.0.46', :box => 'precise32' },
  { :hostname => 'ex7static2', :ip => '192.168.0.47', :box => 'precise32' },
  { :hostname => 'ex7cache',   :ip => '192.168.0.48', :box => 'precise32' },
]
 
Vagrant::Config.run do |config|
  nodes.each do |node|
    config.vm.define node[:hostname] do |node_config|
      node_config.vm.box = node[:box]
      node_config.vm.host_name = node[:hostname] + '.' + domain
      node_config.vm.network :hostonly, node[:ip]
 
      memory = node[:ram] ? node[:ram] : 256;
      node_config.vm.customize [
        'modifyvm', :id,
        '--name', node[:hostname],
        '--memory', memory.to_s
      ]
    end
  end
 
  config.vm.provision :puppet do |puppet|
    puppet.manifests_path = 'puppet/manifests'
    puppet.manifest_file = 'site.pp'
    puppet.module_path = 'puppet/modules'
  end
end

Prima di arrivare a questo livello tuttavia, è necessario cominciare dalle basi: il primo file di configurazione di Vagrant che andremo a scrivere conterrà ben poche specifiche, e si baserà esclusivamente sulla Box che abbiamo scelto per la nostra prima macchina virtuale.

# Una singola Box.
#
Vagrant.configure(“2”) do |config|
config.vm.box = “precise32”
end

Esempio per una singola Box.

Vagrant.configure("2") do |config|
config.vm.box = "precise32"
end

Inoltre il Vagrantfile deve essere soggetto a version control (tramite git ad esempio) per tenere traccia di ogni modifica e rendere il tutto facilmente riportabile in una nuova architettura

Avviamo la Box

# sudo vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Mounting shared folders...
[default] -- /vagrant

Adesso che abbiamo il nostro progetto funzionante, basterà dare

# vagrant ssh
Last login: Fri Apr 15 05:43:58 2011 from 10.0.2.2
[vagrant@localhost ~]$

per collegarci ed esserne subito operativi all’interno della nostra box.

Provisioning
Vagrant non è solo un sistema per avviare velocemente delle macchine virtuali, infatti ci permette anche di controllarle, e di controllarne le impostazioni nel tempo, insieme al software installato. Possiamo quindi gestire la configurazione automatica secondo le nostre esigenze delle varie Box che abbiamo, attraverso una struttura di provisioning abbastanza flessibile che supporta normali shell script (Bash), il buon vecchio Puppet, ma anche Chef e Ansible.

Tramite questa infrastruttura possiamo modificare il Vagrantfile per eseguire quindi qualsiasi istruzione, che sia configurata per script Puppet oppure attraverso Bash. Ad esempio, possiamo utilizzare la piccola struttura riportata di seguito, che proviene direttamente dalla documentazione di Vagrant e che mostra come sia facile scriversi uno script di configurazione da mandare poi in pasto alla propria Box.

$script = <<SCRIPT
echo I am provisioning...
date > /etc/vagrant_provisioned_at
SCRIPT
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: $script
end

Non solo VirtualBox

Una volta imparato a usare Vagrant, avremo comunque basato tutto il nostro lavoro su VirtualBox. Tuttavia, potremmo anche avere qualcosa in contrario sull’uso di VirtualBox, e voler usare altri provider che ci permettano un’amministrazione più efficace o semplicemente il riciclo di competenze che già abbiamo. Ad esempio, Vagrant supporta tramite plugin anche l’integrazione con VMWare o con Xen; questi plugin sono installabili attraverso il gestore integrato nel software, semplicemente tramite un singolo comando, esattamente come in un classico gestore di pacchetti:

# vagrant plugin install vagrant-vmware-fusion

Oppure se invece di VMWare Fusion usate la variante Workstation:

# vagrant plugin install vagrant-vmware-workstation

Una volta installato il plugin, ed ovviamente il software di providing delle macchine virtuali che vogliamo testare, ci bastera’ modificare il Vagrantfile, con istruzioni come queste nell’ esempio:

Esempio tratto da [ http://puppetlabs.com/blog/new-vmware-provider-gives-vagrant-a-boost ]

config.vm.provider :vmware_workstation do |v|
v.vmx["memsize"] = "2048"
end

Vagrant può ovviamente essere configurato per essere alla base di una complessa configurazione in ambiente cloud, o della propria infrastruttura più modesta.

Se questo primo articolo vi ha incuriositi, la documentazione ufficiale, passo passo, vi sta aspettando : VAGRANT DOC

Nel prossimo articolo vedremo come sfruttare le potenzialita’ di Vagrant + Docker.

#VagrantVirtualizzazioneeProvisioning

Machine e Deep Learning

Machine & Deep Learning

Machine & Deep Learning

Machine Learning

Che cos’è il machine learning?
Letteralmente può essere tradotto come “apprendimento delle macchine” o per meglio dire come “apprendimento automatico”. Per apprendimento si intende quel processo attraverso cui si diventa più abili, precisi e veloci a compiere un certo compito, in modo tale che chi ha appreso a fare qualcosa la possa fare meglio e più velocemente di prima. Per machine si intendono i computer, più precisamente i software e ancora più nello specifico gli algoritmi che sono alla base del funzionamento.

Si tratta quindi di scrivere dei programmi software che siano capaci di analizzare dei dati e, sempre più spesso si tratta di analizzare grandissime quantità di dati, rintracciando al loro interno dei pattern ricorrenti in modo da estrarre automaticamente l’algoritmo necessario per completare il compito assegnato.

Più semplicemente un programma per machine learning apprende dall’esperienza a realizzare un compito e le sue prestazioni migliorano con il tempo per ogni volta in piu’ in cui ripete quel compito.

Un esempio di machine learning 

Nel 2012 gli ingegneri di Google hanno creato un software (in particolare si trattava di una rete neurale che funzionava grazie a 16.000 processori collegati tra loro). Successivamente a questo software sono sono stati mostrati dei video presi da Youtube per tre giorni, ma senza dar loro alcuna indicazione a proposito di cosa fosse contenuto nei video.

Bene, l’esperimento ha dimostrato che il software è stato capace di riconoscere il ripetersi di volti umani e gatti nei frame dei video di Youtube. Se volete saperne di più qui trovate tutti i dettagli di questo esperimento, google_machine_learning.

Deep Learning

Esiste anche una nuova tendenza che si sta sviluppando nel campo dei Big data , risponde al nome di deep learning (traducibile come apprendimento approfondito).

Dietro il nome di deep learning si nascondono una serie di tecniche e tecnologie informatiche, nella fattispecie degli algoritmi di calcolo statistico attinenti alla branca dell’intelligenza artificiale e dell’apprendimento automatico, per l’appunto il machine learning. Questi algoritmi, strutturati in diversi livelli di astrazione, hanno lo scopo di permettere al sistema informatico di comprendere, più o meno, come funziona il cervello umano e come quest’ultimo analizzi e interpreti, ad esempio, il linguaggio o le immagini che gli arrivano dal nervo ottico.
Per fare ciò, i sistemi informatici in grado di portare avanti analisi del tipo deep learning sono basati su vaste reti neurali artificiali in grado di funzionare come i neuroni presenti nel cervello dell’uomo.

Perché Facebook (e gli altri)
Oggi giorno pare che tutti i grandi dell’hi-tech, a partire da Facebook sino a Google, passando per Yahoo! e Microsoft, stiano guardando con parecchia attenzione agli sviluppi che si registrano in questo settore. Investendo parecchi soldi negli istituti di ricerca più avanzati, e il perché è presto detto.
Il deep learning potrebbe (o per meglio dire dovrebbe) migliorare il modo in cui i dispositivi informatici analizzano il linguaggio naturale. Di conseguenza, ne dovrebbe migliorare sensibilmente la comprensione.

Se la strada intrapresa porterà ai risultati sperati, il deep learning dovrebbe permettere alle reti neurali che formano i sistemi informatici di processare i linguaggi naturali così come avviene nel cervello umano. I computer, insomma, potranno capire cosa gli utenti umani scrivano sulla loro bacheca o cosa vogliano cercare realmente; se siano tristi o felici; se l’immagine che hanno appena visualizzato gli sia piaciuta oppure no.
Facebook, Google, Microsoft e Yahoo!, quindi, potrebbero realizzare dei servizi commerciali sempre più approfonditi e precisi, rivendendo questi dati alle agenzie di comunicazione e marketing di tutto il mondo per campagne pubblicitarie sempre più mirate e cucite su misura dei bisogni degli utenti.

Chi vivra’ vedra’ !!!

Zenfeed il tuo prossimo RSS

ZenfeedLa chiusura di Google Reader, nel 2013, ha lasciato scoperto un campo in cui diverse start-up hanno spostato la loro attenzione creando cosi’ le  alternative tra gli aggregatori di feed news RSS.

Tra questi sicuramente spicca Zenfeed, un RSS Reader nato in Puglia anche grazie al supporto di The Hub Bari. Zenfeed è una soluzione avanzata ed  utile per esplorare e filtrare le news in base alle attività che si compiono solitamente sui social network.

 

L’azienda e’ guidata da Giuseppe Silvano, CEO e fondatore della Start Up.

Il progetto e’ stato presentato allo “Startup Weekend” di Bari nel settembre del 2012. Proprio lì , si è classificata al primo posto della competizione.

Zenfeed e’ il news reader intelligente che conosce gli interessi dell’utente, in quanto permette di ricevere tutte le news dei tuoi siti preferiti in un’unica interfaccia e, grazie ai suoi algoritmi semantici, è in grado di leggere le tue news ed ordinarle per importanza, automaticamente, secondo i tuoi interessi. Così anche se segui centinaia di siti e ti arrivano un mare di news, con Zenfeed hai sempre la certezza di poter leggere le news più importanti nel tempo a tua disposizione.

Sono passati appena due anni dall’inizio del progetto (730 giorni) ed i ragazzi (eta’ media 29 anni) di Zenfeed hanno gia portato l’idea a diventare un vero e proprio business.

Insomma cos’altro aggiungere…, si chiama Zenfeed, e lo abbimao detto, e adesso lo puoi scaricare gratuitamente dall’App Store, quindi cosa aspettate ???

TransferWise – scacco alle Banche

money_transferRicordo ancora quando, pochi mesi fa, il “Top Manager” Flavio Briatore, durante un incontro con i giovani Bocconiani, aveva loro suggerito di aprire una pizzeria invece di imbarcarsi nel progetto di una start-up. Per fortuna il “verbo” secondo Briatore non dev’essere arrivato fino in Estonia che, ad oggi, invece, vanta il piu’ alto numero di start-up in divenire, considerando il suo esiguo numero di abitanti (1.300.000 circa). Questo perche’ dopo la crisi del 2008, hanno investito sulla diffusione della “banda larga”.

Infatti in Estonia non esiste il problema della diffusione della banda larga, perché semplicemente c’è solo quella e raggiunge chiunque. Su di una cosa aveva ragione Briatore quando ha detto che l’Italia è 7 punti sotto la media europea per diffusione della banda larga.

E’ proprio in questo humus d’innovazione che nascono anche nuove idee quali quella venuta in mente ai ragazzi (ex skype ed ex paypal) quando loro stessi si sono trovati con la necessita’ di poter spostare soldi con una certa facilita’ ma anche senza dover pagare i gravosi dazi che impongono le banche.

TransferWise

Ma di cosa si tratta? TranserWise e’ un servizio peer-to-peer per il trasferimento di denaro nato nel gennaio del 2011, con sede a Londra, che “aggira” le commissioni bancarie sul cambio valuta, ossia, se voglio trasferire 1000 euro su un conto in Gran Bretagna in sterline, le banche applicano una commissione pari al 5% (a volte fino al 10%): circa 50 euro finiscono cosi’ nelle tasche della banca. Se faccio quest’operazione mensilmente, in un anno sono 600 euro che la banca si mette in tasca, mica bruscolini.

Con TranferWise, invece, la commissione che si applica al trasferimento di denaro è di 1 euro (per importi fino a 200 euro) e 0,5% (per importi superiori). Non c’è che dire, un bel risparmio. La procedura che si esegue per effettuare un bonifico estero tramite TransferWise è molto semplice, in quanto ogni transazione non verrà effettuata direttamente tra i due conti utenti, ma con l’intermediazione di TranferWise.
  • L’utente A italiano che vuole mandare 1000 euro in Inghilterra (ad esempio), dovrà prima effettuare un bonifico nazionale e depositare l’importo sul conto bancario Transferwise. Il servizio convertirà la somma depositata in sterline e, tramite il conto TranferWise inglese, verrà fatto il bonifico sul conto dell’utente B, applicando una commissione dello 0,5%.

Questa ottima idea ha tra gli investitori anche Sir Richard Branson , patron della Virgin, e altri importanti nomi come quello di Peter Thiel  (PayPal), 25 milioni di dollari di munizioni per battere le banche, che hanno gia investito 25 milioni di dollari.

Insomma, che le banche inizino a tremare  😉

Abinsula sbarca in Argentina

linux_sardoAbinsula, azienda Sarda, sigla un accordo con la Sudamericana Kinray Group

Sara’ un accordo di collaborazione tecnologica e commerciale per arricchire l’offerta con nuove soluzioni e veicolare la propria attività nel mercato sudamericano. È quanto stipulato nei giorni scorsi tra Abinsula, l’azienda sarda leader in Italia nella progettazione di sistemi embedded su piattaforme Linux, e l’argentina Kinray Group.

 

La firma dell’accordo tra le due aziende è avvenuta pochi mesi fa a Cagliari, nella splendida cornice del Poetto. A rappresentare l’azienda sudamericana era presente il Ceo di Kinray Group, José Luis Fernández Ausinaga.

La Kinray Group è un’azienda specializzata in soluzioni digitali ad alto contenuto tecnologico per la brand strategy come chioschi interattivi, realtà aumentata, soluzioni su Large Video Wall LCD e opera nei mercati di  Argentina, Puerto Rico, Italia, Spagna e Israele.

Grazie all’accordo di collaborazione sia tecnologica che commerciale quindi, Abinsula potrà aggiungere alla propria offerta tecnologica le soluzioni di Kinray e potrà commercializzarle in Europa. La Kinray Group dal canto suo potrà veicolerà l’offerta Abinsula nel mercato sudamericano.

«Si tratta di una nuova opportunità per la nostra azienda – hanno detto Pierluigi Pinna e Antonio Solinas in rappresentanza di Abinsula – che, grazie al contributo di Pubblicitas che ha permesso questo incontro, ci consente un confronto con una realtà d’oltre oceano. L’accordo poi ci permette di inserire un ulteriore tassello per l’internazionalizzazione dell’azienda che, fedele al proprio nome “ab insula”, intende creare innovazione nell’isola da esportare in tutto il mondo».

In questo grave momento di crisi mondiale non possiamo che fare gli auguri ad un’azienda italiana che cerca di tenere la testa alta e di varcare i confini nazionali portando il proprio ingegno ed il proprio know-how.