Mastering Ansible

Il corso Ansible al Container Day 2018

Cos'è Ansible?

Uno strumento semplice, scritto in un linguaggio che si avvicina al plain english, che permette di installare sistemi e servizi in modo standard e riproducibile. Si basa solo sul protocollo SSH e non occorre aggiungere altri componenti sui nodi target (a parte Python).

Panoramica del corso

Un corso hands on per imparare ad orchestrare Ansible al fine di creare delle pratiche automatiche nella gestione dei vostri server e servizi.

Verranno toccati i seguenti punti:

  • installazione e troubleshooting di Ansible.
  • La command line e i moduli di Ansible.
  • Playbooks: le ricette di Ansible.
  • Utilizzo di Ansible in un ambiente di virtualizzazione Vagrant.
  • Ansible Galaxy e la creazione di codice Ansible aderente alle best practices.
  • Come testare il codice Ansible.


È desiderabile lavorare in un ambiente omogeneo per cui si richiede ai partecipanti di installare Vagrant sul proprio pc e attivare una macchina virtuale basata su Debian seguendo istruzioni fornite da noi qualche tempo prima del corso.

A chi è rivolto: a sistemisti, programmatori e ... DevOps!

In generale a tutti coloro che desiderano utilizzare uno strumento moderno per automatizzare, documentare e standardizzare attività di gestione di programmi e sistemi.

Dove e quando?

Iscrivetevi sulla pagina dei Workshop del Container Day; il corso si terrà il 25 ottobre 2018 a Verona nel contesto del Container Day che si terrà il giorno successivo.

Looking back at Glustered 2018

My retrospective on the event

On Thursday 2018-03-08, the day before IDI2018 , the first edition of Glustered took place.

Twenty people showed up. Around half of them were new to Gluster and evaluating its adoption, while the other half comprised people with previous Gluster experience, from the novice up to the software-defined storage professional from Red Hat Italy.

In the morning there have been three tech talks. Niels presentation started from an introduction to Gluster, going through some of the latest features of the just-released Gluster 4.0, and finished illustrating what to expect from the 4.x road map. Marko did a live demo of gluster-colonizer , a brand new Ansible-based project to automatically provision Gluster clusters. Jiffin talked about what the duties of a release maintainer are, and did a live release of Gluster 3.12.

In the afternoon I did my part by illustrating most of the use cases I addressed as a consultant, while Ramon Selga from Datalab gave the audience a lot of information about disperse volumes and how to host virtual machines within Gluster volumes. Both sessions included lively discussion and questions from the audience. I liked it.

Being a first, I think the event has been a success.

Will there be another one? Possibly, if the community will keep showing interest. Although it would be nice to have a larger fraction of the attendance coming from outside Italy.


Ansible best practices, private git repos and ansible-galaxy

Our experience on tweaking the Ansible's default role structure using git!

Ansible roles and private git repos

Ansible is a python tool that automates the management of an IT infrastructure. It is easy to learn but rushing to use it with a limited knowledge of its best practices (roles) leads to not reusable code. To quote the documentation about roles: “You absolutely should be using roles. Roles are great. Use roles. Roles! Did we say that enough? Roles are great.”.

So, writing reusable ansible roles is not easy but it's a task worth doing. This post will walk you through the construction of an ansible role scaffold supported by private git repos.

Install Ansible and git

Be sure to have git and Ansible installed. You should at least be working with ansible==2.3.0. Install Ansible in a virtualenv using pip to keep this environment clean.

$ pip install virtualenv
$ virtualenv myproject
$ . myproject/bin/activate
$ (myproject) pip install Ansible==2.3.0

Create an Ansible role

The first step

The first step in creating a role is creating its directory structure. Use the init command of ansible-galaxy, which comes bundled with Ansible, to initialize the base structure of a new role, saving time (and increase reproducibility) on creating the various directories.

What if you don't use Github?

Keep in mind that Ansible relies on Github, therefore the test files created by ansible-galaxy init command are meant to run CI (Continuous Integration) tests on Travis. But we work with GitLab! Our CI files are called .gitlab-ci.yml files and have a different syntax compared to Travis files. So, how can one leverage the ansible-galaxy command when he/she is not testing on Travis?

Write your own role scaffold

Starting from ansible==2.3.0 the ansible-galaxy command supports creating roles using a different role skeleton:

ansible-galaxy init --role-skeleton biodec.template/ -p . biodec.role_name

biodec.template is git project that we have developed during this year. It is an Ansible role scaffold to work and test things on GitLab. The main difference with respect to the default scaffold is the test file: .gitlab-ci.yml:

    image: buildpack-deps:stretch
       - apt-get update -y && apt-get install -y python python-dev python-pip
       - pip install -r requirements.txt
       - echo localhost > inventory
       - ansible-playbook -i inventory test.yml --connection=local -v

Advantages of our scaffold

We found convenient to use our own scaffold for a series of reasons besides testing on GitLab rather than on Travis:

  • write your own README (and licence);
  • write a custom dependency file that will gather roles from various sources (including another private git repository);
  • write a requirements file for pip that will keep Ansible's version fixed (a missing feature in ansible-galaxy which encourages you to work always with the latest version).


When developing Ansible code:

  • write/use roles!
  • write roles using standard tools like ansible-galaxy init
  • you can tweak the role skeleton if you want to and still adhere to Ansible's best practices
  • you can build your private Ansible Galaxy privately, on a self-hosted GitLab platform

A talk on this subject

We presented a talk at PyCon 8 this year talking about this subject. Feel free to download the slides if you like it.

A Christmas letter to Gluster developers

Where I talk about Gluster resiliency

Dear Gluster developers,

Last few days has been tense since a R3 3.8.5 Gluster cluster that I built has been plagued by problems.

The first symptom has been a continuous stream in the client logs of messages like:

[2016-12-17 15:55:02.047508] E [MSGID: 108009] [afr-open.c:187:afr_openfd_fix_open_cbk] 0-prod-1-replicate-0: Failed to open /galaxy/java/lib/java/jre1.7.0_51/jre/lib/rt.jar on subvolume prod-1-client-2 [Transport endpoint is not connected]

together with very frequent peer disconnections/reconnections and a continuous stream of files to be healed on several volumes.

The problem has finally been traced back to a flaky X540-T2 10GBE NIC embedded in one of the peers motherboard. The thing was incapable of keeping the correct 10Gbit speed negotiation with the switch.

The motherboard has been replaced on the peer and, after that, the volumes healed quickly to complete health. In the meantime, the users kept running some heavy-duty bioinformatics applications (NGS data analysis) on top of Gluster. No user noticed anything, despite a major hardware problem and the off-lining of a peer.

This is a RESILIENT system, in my book.

Despite the constant stream of problem reports and requests for help that you see on both the ML and IRC, rest assured that you are building a nice piece of software, at least according to my experience.

Keep-up the good work and Merry Christmas.

Ivan Rossi

PS I have the strong feeling that people running Gluster in a cloud environment will have experiences like this one more time that they would like. But it is not Gluster fault, IMHO.

5 modi per migliorare la produttività aziendale

5 modi per migliorare la produttività aziendale

5 modi per migliorare la produttività aziendale

Il mondo dell' IT è in continua trasformazione e i cambiamenti diventano sempre più veloci ed imprevedibili. Assistiamo alla proliferazione di piccole realtà (startup) che, grazie all’utilizzo di metodi di lavoro innovativi, riescono a tenere testa a grosse aziende che spesso sono refrattarie al cambiamento.

Gli approcci vincenti sono in gran parte ispirati alle metodologie agili (qui il manifesto originale) e vedono affermarsi la figura del Devops.

Noi di Biodec abbiamo adottato un mix di pratiche agili ed organizziamo, da 5 anni, il principale evento devops in Italia.

Oggi vogliamo parlare di qualche spunto per trasformare la vostra azienda in una realtà agile e resiliente:

#1 Agevolare il cambiamento

Siamo nell’era della “digital transformation”:

  • usiamo molto meno hardware e molti più sistemi virtuali (cloud, containers)
  • amministriamo l’infrastruttura con strumenti software di alto livello (che evolvono rapidamente)

Favoriamo il cambiamento imparando a gestire questi strumenti.

Strumenti che usiamo: AWS, Ganeti, Gluster e Docker

#2 Aumentare le competenze

Esistono prodotti per facilitare la transizione verso una mentalità agile e devops. Biodec ha adottato, da qualche anno, ansible: un sistema per orchestrare l'installazione e la configurazione di sistemi ed applicazioni. Offriamo la nostra esperienza per affiancare l’adozione di ansible in azienda con un corso o realizzando soluzioni direttamente.

Strumenti che usiamo: ansible

#3 Scegliere gli strumenti di lavoro

Essere un’azienda agile e resiliente significa rispondere ai cambiamenti improvvisi (del team o delle richieste del cliente) senza andare off-line. Alcuni strumenti fondamentali per questo sono:

  • il version control system perchè il codice evolve (anche se lavoriamo da soli) e il team anche
  • strumenti di test e Continuous Integration
  • ambienti di test
  • strumenti di monitoraggio

Strumenti che usiamo: Git, Gitlab, Gitlab-CI, Docker, OMD

#4 Instaurare un feedback continuo

Fissiamo riunioni (almeno settimanali) in cui il team si ritrova e parla dell’andamento delle attività. Usiamo un “issue tracker” come Redmine per schedulare le attività e avere un feedback continuo col cliente includendolo come membro del team.

Strumenti che usiamo: Redmine, Scrum

#5 Praticare la consistenza

Aderiamo al metodo di lavoro adottato.

Siamo stati al Docker Workshop

Ieri ho partecipato al Docker Workshop a Roma organizzato da Kiratech

Un workshop introduttivo su Docker

Kiratech e il Docker User Group di Roma hanno organizzato presso il Talent-Garden un workshop (gratuito e organizzato molto bene!) su Docker. Il Workshop, di carattere introduttivo, ha offerto una panoramica dettagliata sull'ecosistema Docker toccando i punti principali

  • Cos’è Docker
  • I comandi base per interagire con i container
  • Docker orchestration
  • CI/CD con docker

Noi abbiamo partecipato in quanto utilizzatori di docker e partner, insieme a Kiratech e xpeppers, di 4devops.

A seguito del workshop si è poi svolto il Docker-meetup, una serie di presentazioni più interessanti per chi vuole stare dalla parte dello sviluppo dei container.

A concludere.. pizza e birra & Networking!

Complimenti a Kiratech per la bella iniziativa!

Number 4

The fourth edition of "Incontro DevOps Italia" 2016 is over.

Some raw data

First, let the numbers speak by themselves:

  • 190 tickets sold,
  • 24 speakers,
  • ~10 organizers (BioDec's staff, Ideato, Grusp, Roberto Bettazzoni and Alessio Bragadini),
  • 1 main sponsor, 2 gold sponsors, 6 silver sponsors, 1 bronze sponsor, 1 media partner,
  • cost: 50 euro +VAT (lunch and one coffee break included),
  • 1 dedicated web site,

adding all the people, the overall number of participants has been a grand total of 250 people, a +40% on 2015 and more than three times the participants of the first edition.The number of tracks and open sessions were more than any other previous edition and for the first time we had a whole international track with speakers from over the world.

Keynote by Mark Burgess

Some considerations

  • People were interested in all the sessions, there were many questions and conversations.
  • The workshops were a huge success: the sponsors were very happy, the participants too.
  • People enjoyed the location, the food and getting to Bologna was not a real issue for many participants.

So it was worth the effort, at least from my point of view, and BioDec's. A lot of talks were very interesting, just the two I remember more: Steven Borrelli on and the keynote by Mark Burgess.

Steven Borrelli

Keynote by Mark Burgess

Some random links:

  • the event web site - to see the program, the links to the presentations, etcetera (in progress ... soon all the videos !)
  • the twitter account of the event @incontrodevops
  • please send any feedback to

See you next year ?

Why not ?

Corso introduttivo su "Ansible"

Terremo un corso di formazione su "Ansible", in data 11/5/2016 presso la nostra sede.

Se siete interessati a imparare come usare Ansible, terremo un corso di livello introduttivo i'11/5/2016 presso la nostra sede.

Qualche posto è ancora disponibile. Se siete interessati, scrivete a .

Argomenti trattati:

  • Introduzione ad ansible 2.0;
  • Elementi di interazione via Ansible con Amazon AWS.


Un grande DockerOps

Sabato 13 febbraio si è svolta la prima (ma non ultima, penso) edizione di DockerOps.

La prima edizione dell'evento ha visto il tutto esaurito, un pubblico entusiasta e interventi interessanti: direi che ci sono gli estremi per replicare ...


Grazie a tutti gli altri relatori del DockerOps, che sono stati disponibilissimi a fermarsi fino alle 19 di sera (dalle 9.30 della mattina … di un sabato …) a rispondere alle domande, mie, di Mauro Tortonesi e del pubblico: il commento di un dei relatori (Massimo Re Ferré) è stato sintomatico “Ma che cosa avete da queste parti ? Una retention dell’80 % alle sette di sera ? Con le persone che continuano a fare domande !” (e tralascio il resto del commento sugli eventi commerciali organizzati da altre aziende col nome molto corto).

Grazie infine al Centec per avere offerto lo spazio, e ovviamente a tutti i partecipanti !

Una variante di questo post con qualche foto.

Gli eventi di inizio d'anno

Abbiamo in cantiere alcuni incontri, nei prossimi mesi, che culmineranno col la quarta edizione dell'Incontro DevOps Italia.

Pronti, si parte

Inizia l'anno e iniziano gli eventi che co-organizziamo, praticamente uno al mese, fino alla quarta edizione dell'Incontro DevOps Italia 2016, il 1 Aprile.

Per cui: segnatevi in agenda gli eventi, e venite a trovarci, probabilmente non ve ne pentirete.