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:

stretch:
    image: buildpack-deps:stretch
    script:
       - 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).

Summary

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 mantl.io and the keynote by Mark Burgess.

Steven Borrelli

Keynote by Mark Burgess

Some random links:

  • the event web site http://www.incontrodevops.it/events/idi2016/ - 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 info@incontrodevops.it

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 ...

Thanks

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.

... and then it was three

The third edition of "Incontro DevOps Italia" 2015 is over.

Some raw data

First, let the numbers speak by themselves:

  • 160 tickets sold,
  • 15 speakers,
  • ~10 organizers (BioDec's staff, Ideato, Grusp, Roberto Bettazzoni and Alessio Bragadini),
  • 4 silver sponsors, 3 media sponsors,
  • cost: 30 euro +VAT (lunch was just an extra 10 euro),
  • 1 dedicated web site,

adding all the people, the overall number of participants has been around 180 people, a +55% on 2014 and more than double of the first edition.The number of tracks and open sessions were more than the whole of the previous editions.

Me, pontificatingPeople, listening

Some considerations

  • People were interested in all the sessions, there were many questions and conversations.
  • People networked, but the open spaces were almost empty: this is an issue to think about.
  • People enjoyed the location, the food and getting to Bologna was not a real issue for many participants.
  • I got email from non-native speakers, asking if any track would be in English (there were none).
  • I forgot to print the feedback sheets that I usually left to the participants: please send any feedback to info@incontrodevops.it

So it was worth the effort, at least from my point of view, and BioDec's. My favourite moment was the "Facebook talking to Facebook" situation with Davide Bolcioni (Facebook, US) speaking to Angelo Failla (Facebook, Ireland) about their infrastructure, among an amazed audience.

FB tlaks to FB

Some random links:

See you next year ?

Why not ?

La prima edizione della ΛCon

Oggi si è tenuta la prima edizione della ΛCon a Bologna: resoconto per chi non c'era.

Prima edizione ?

Non sembrava: come ha spiegato Luigi Berrettini nella chiusura dell'evento: 280 iscritti, persone da tutto il mondo, presentazioni in inglese, e qualità degli interventi di alto livello. Complimenti agli stanchi organizzatori (in prima fila accasciati), e agli eleganti speaker:

Foto di gruppo

Finalmente una conferenza tecnica

Finalmente una conferenza veramente tecnica, dove ogni presentazione richiedeva di tenere acceso il cervello e alta l'attenzione. Una conferenza che rispetta gli alberi, ma che non li abbraccia.

La mia presentazione mi ha soddisfatto, e spero sia piaciuta (la sala era piena, e nessuno è scappato durante l'evento) - le slide sono sul repository della conferenza https://github.com/LambdaCon/2015 :

Foto del talk su type theory

Infine, una mano misteriosa ha vergato un messaggio per i posteri:

Fantomas all'opera

Al prossimo anno, e ancora complimenti agli organizzatori !