Pierre Mavro / Deimosfr

Neo4J is the most popular graph database in the NoSQL databases family. We’re using it in the Nousmotards project to store all social data through nodes and relationships.
Today I am going to talk about our experience after having using it for 2 years now (take a look at directed graph if you are not really familiar with Graph Database).
1/ Our use case Nousmotards is a social network for bikers, we aim to provide valuable tools to ride, meet and share nice time with people who like motorcycling.

The Ansible meetup ended ! That was really nice for my first one.
I had really great feedbacks and liked the questions when ended. More than that I met nice people after the meetup and could have interresting discussions :-). I’m really happy about it.
For those who would like to review the slides, you can find them here:
http://nousmotards.github.io/ansible-meetup-0915/
If you want to watch the video:
http://www.infoq.com/fr/presentations/reseau-social-motard
or view the PDF version here:

For a new project (will talk about it later), I needed to use Neo4J (graph database if you don’t know it yet).
I tried to cover more features than the current existing Ansible roles available on Ansible Galaxy. More will come in the next weeks. I also tried to make it simple to install it and do not force dependencies at maximum. Here are parameters you can set:
# Select neo4j version neo4j_package: neo4j # community version #neo4j_package: neo4j-advanced #neo4j_package: neo4j-enterprise # Neo4j spatial plugin neo4j_install_spatial: false neo4j_spatial_version: '0.

I recently played with ElasticSearch Cluster and I totally fall in love! How easy it is, everything is automatic, it works perfectly, wowwww!!!
I made a little documentation on how to setup one, you can find it there.
ElasticSearch is a really powerful solution and I really like working with it. If you’re searching a full text search solution, try ElasticSearch, you’ll be happy!

I really like working on ElasticSearch, so powerful, so easy to use, so scalable and so high available. I’ve found a very interresting book I bought on it.
It will help you to start with ElasticSearch and answer a lot of question you may have regarding the product. If you want to buy it, take a look there.

During the last weeks I started to play with Elasticsearch, Fluentd and Kibana. I made a documentation to help on deploying it easily.
As you may know, I’m an Ansible fan, so I made Ansible playbooks to deploy a complete infrastructure (server and clients). They will deploy this kind of architecture:
On the client side, Fluentd clients will get syslog and Nginx logs, to send them to the Fluentd server. On the server side, a Fluentd receiver will be there to get data from other Fluentd clients.

Next Tuesday, ElasticSearch will takes place. Last meetup was very interesting and technical.
I hope this one will be as good as the last one. There will be a talk from Dailymotion and an ElasticSearch Core developer.
To get more informations it’s here.

Pierre Mavro / Deimosfr

I’m using Kubernetes on an on premise cluster for MySocialApp. Today, I’m storing MySocialApp public images at Quay.io and I also wanted to store private images. I didn’t want to bootstrap a private registry for it to avoid maintaining it, having a distributed storage to maintain for it etc…but wanted a solution at a lower cost.
I started to look at DockerHub and Quay.io. As far aas I saw, DockerHub do not provide private registry while Quay does.

The Jeedom software is open source; you have complete access to the software that manages your home automation. Jeedom is compatible with various protocols, like Z-Wave, RFXCOM, RTS SOMFY, EnOcean, xPL, etc.
Installing Jeedom on Synology with Docker it not a complex task. However for those who are not familiar with those technologies, I summarized here the installation process for a Z-wave network.
First of all, let’s look at the requirements:

Traefik (pronounced like traffic) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Eureka, Amazon DynamoDB, Rest API, file…) to manage its configuration automatically and dynamically.
In a previous post, I explained how to manually deploy it in HA mode. For MySocialApp (iOS and Android social app builder - SaaS), I had to automate it.

If you follow me, you may know that I launched with friends Nousmotards social application a few years ago. The solution continue to grow in France with more than 70k bikers and that’s a good point for all those riders :)
Since we launched Nousmotards, several persons asked us: “You’ve made an amazing job for bikers, do you provide your social solution to any other communities or for enterprises?”. The answer was: No we didn’t.

Traefik (pronounced like traffic) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Eureka, Amazon DynamoDB, Rest API, file…) to manage its configuration automatically and dynamically.
I wanted to deploy it on Kubernetes for its interesting features like:
Connect to Kubernetes API to listen changes and perform on the fly updates Automatic SSL management through Let’s encrypt (SNI) Prometheus native integration HTTP/2 support I really like HAProxy, but in a Kubernetes case, it’s not the recommended solution because of its lake of features.

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. I’m using it for Nousmotards and decided to build an Ansible role for it to make it simpler to deploy.
Why did I built it as other projects like Kargo already exists? I just wanted a simple and maintainable role based on CoreOS official documentation. That’s what I did:
This role bootstrap a Kubernetes cluster based on CoreOS Container Linux for production usages.

As you certainly seen, the blog has been migrated :-). Visualy there is a big change and technically it’s the same.
I was fed up about maintaining Wordpress with its stack (Nginx / php-fpm / MariaDB) for a mostly static blog. I was thinking about migrating from Wordpress to something in markdown since several years but didn’t know exactly which solution I wanted to choose. I really enjoyed using Wordpress but wanted to keep hands on my blog and didn’t want to switch to full hosted Wordpress because of its limitations (image size etc…).

CoreOS is a lightweight Linux operating system designed for clustered deployments providing automation, security, and scalability for your most critical applications. I’ve been playing with CoreOS to replace Debian hosts which run Docker containers on Nousmotards project. CoreOS helps on simplifying bare metal deployment and avoid managing OS upgrade.
As I’m still an Ansible lover, I’ve made 2 roles:
CoreOS Ansible: Ansible role to deploy pypy to CoreOS to be able to get Ansible prerequisites CoreOS: Ansible CoreOS role to deploy CoreOS on bare metal servers If you want to quickly look at the result:

Long time since my last post. This one is not very technical post, but it’s a nice to have solution if you use grep usually. Are not you fed up to type vim and search the line after a grep command ? If yes, this post is for you.
First of all, you may know that an alternative more user friendly to grep exist, called ag (perf comparison). I really like ag and grep, but something make me loose my time since several years and I’m pretty sure it’s your case too.

Some of you may not be familiar with the terms “Rolling upgrade” or “Rolling restart”. This is the action of upgrading or restarting a cluster without service interruption (alias zero downtime). In most cases, this is done node by node, but in fact it depends of the technology you’re managing and the number of active nodes in your cluster.
At Nousmotards we have several Java Spring Boot applications running. Restarting one application can take up to 1 min.