Last week we released the version 0.9.0 of Clouder, which bring a lot of improvements especially in the deployment process. Two softwares are added in the Clouder infrastructure : Salt and Gitlab.
Salt is an orchestrator, like Puppet/Chef/Ansible. The idea behind integrating an orchestrator is to delegate most of the configuration work to a tool which is really design for it, has tons of plugins, a great community, so it can replace the ssh calls we are doing now. We don’t have real use case yet which Salt can manage whereas SSH can’t, but we just feel this is the right direction to go.
Also, why choosing Salt over Ansible for example, the reason is mainly because it’s written in Python like Odoo (and so Clouder), which mean we can easily integrate it in the Clouder code without relying on SSH calls anymore. Moreover, thanks to the fact that commands are executed by Salt minion and not the master, a Salt infrastructure is incredibly scalable.
Next come Gitlab. No need to present it, it’s obvious that having a SCM in Clouder to manage the collaboration around projects is a must have, and Gitlab is probably the best open-source project for this today.
But what’s really the gamechanger here is Gitlab CI. Gitlab is now able to manage deployment pipeline, and manage for example the following process :
- After commit, build a new Docker image with the last source code from your/Odoo/OCA repos
- Push your image in the private Docker registry
- Execute OCA tests in a docker container
- If tests are green, deploy it in a staging environment
- After approval, deploy in production environment and update Odoo bases.
And the pipeline itself is fully customizable through the .gitlab-ci.yml file, while the Dockerfile allow you to specify the Odoo version (8/9/10/OCB) and community modules you need, directly in the repository of your project.
This means Clouder is now capable to manage a complete Continuous Integration / Continuous Delivery process, this is a huge step forward. This is also why we needed to integrate Salt, we didn’t want Gitlab to call Odoo for the deployment of the new image, Odoo is not designed for this kind of usage so we needed Salt to be the real heart of the infrastructure. Right now this process only work for Odoo template, but now that we have one we can easily extend it to other applications (WordPress, Drupal, etc…)
Another feature, now some containers are able to auto update. This is especially important for exec container which have their ports exposed so it’s important to update them regularly to avoid security issues. Each day, theses containers check if a new image are available and download/redeploy if necessary.
Same for the files containers, if you are not using the CD process for an instance you now have a button to manually download the new version, deploy it and update the bases linked to it.
CI/CD, integrate an orchestrator, auto-update, there is still one thing that is missing in Clouder if we want to have a fully scalable infrastructure : A tool to manage a Docker cluster. This is especially important to provision new nodes, create a private network between the containers to ensure security, make the instance scalable by duplicating exec containers etc…
Theses needs are usually done through tools like Kubernetes/Openshift/Rancher etc… But with the announcements with Docker 1.12, I feel like the future in clustering will be more and more ensured by tools edited by Docker Inc. so I think the core of Clouder will essentially support Docker Swarm which became a real beast with Docker 1.12 and manage all the features I mentioned. This will probably be our next move.
Also, as you probably see we changed the numbers of the Clouder versions, which are now 0.8.0, 0.8.1, 0.9.0 etc… We change this because we don’t want to stick to the Odoo version anymore, Clouder work with Odoo 8, Odoo 9 and will probably also work out-of-the-box with Odoo 10, the only requirement is the new api. Before the release of 0.9.0 some people thoughts that Clouder was only compatible with Odoo 8, this was too much confusing and we needed to clear that.
Finally, last but not least, I’ll give a presentation of Clouder during Odoo Experience, Thursday at 11h45 (https://www.odoo.com/fr_FR/event/odoo-experience-2016-2016-10-05-2016-10-07-420/agenda). I’ll concentrate on the demonstration so it’s the occasion for you to see how it works, I’m publishing the slides below now because I don’t think I’ll not really be able to show them during the presentation :
I’ll be there during the whole week, including the OCA code sprint, so if you want to meet just send me an email.
I am really excited by the event this year and I can’t wait to see what’ll happen. See you there !