Normation and Rudder at FOSDEM

January 23rd, 2012 by Jonathan CLARKE | No Comments »

FOSDEMJust like every year, once the holiday season is over, we start looking forward to FOSDEM the first weekend in February!

This year, four of us from Normation will be attending, all the way through, from the world-famous, record-breaking beer event to the last talks on the Sunday.

We’ll be introducing Rudder, our open source configuration management tool in the Configuration Management devroom on the Sunday. Our talk will show how Rudder’s approach enables everyone in the IT department to benefit from the advantages of configuration management, without necessarily needing to learn a complex tool, or even get their hands dirty. We’ll describe and demonstrate how this is possible, and dive into the technical architecture that makes it work. Read more on the official talk page.

We’re always interested in meeting new people and discussing configuration management, tools like CFEngine, open source… or even LDAP and Scala, for the more adventurous :)

Come and have a chat, we’ll be easily recognisable in our flashy black t-shirts with the Rudder logo!

Just before FOSDEM, we’re giving a CFEngine 3 training session. Some seats are still available, so why not come and kill two birds with one stone – some professional training at the end of the week, and a good open source event at the weekend!

Looking forward to seeing you in Brussels!

CFEngine training course in Brussels – 1-2-3 February (before FOSDEM)

January 4th, 2012 by Jonathan CLARKE | No Comments »

Need to automate your system administration tasks like installing and configuring servers? Want to ensure policy compliance across your IT infrastructure? Already using CFEngine but interested in learning more?

Going to Brussels for FOSDEM already and could spare a few days before hand to learn a new skill? Or just need a good reason to go to Brussels and then stay on for FOSDEM?

Whatever your interest, you may want to attend our CFEngine training session in Brussels on February 1,2 and 3 (that’s Wednesday-Friday before FOSDEM)!
Read the rest of this entry »

Interactive key exchange with CFEngine

January 3rd, 2012 by Nicolas CHARLES | No Comments »

Here at Normation, we use CFEngine 3 extensively for configuration management across Linux and Windows servers.

CFEngine 3 is a very secure tool, that relies on keys to identify hosts and authorize connections. To set up a secure CFEngine infrastructure, you ought to exchange keys between hosts (note that if you don’t have confidential data on your promises, you can skip the security offered by the public key system).

Read the rest of this entry »

A quick initiation to the Debian package construction

December 22nd, 2011 by Matthieu CERDA | No Comments »

While attenting at this year’s RMLL conferences, I had the opportunity to listen to a great presentation of the APT package management system by Lucas Nussbaum. I then had the idea to create this post as a quick reference on how to quickly build someone’s first Debian package.

You are kindly invited to take a glance at the complete presentation hosted here if you want to learn more about this exciting part of the Debian systems.

Your first Debian package

First, you will need to pull all the required dependencies required to build any package – please ensure that you have some deb-src entries in your sources.list (using Synaptic or your good old fashioned CLI editor) or else you will get a “E: You must put some ‘source’ URIs in your sources.list” error.

apt-get update
apt-get install build-essential devscripts debhelper

Read the rest of this entry »

Configuration management tools for cloud computing (Open World Forum 2011)

September 28th, 2011 by Jonathan CLARKE | No Comments »

The Open World Forum 2011 edition took place last week in Paris. I was invited to present a workshop in the Cloud Computing track.

This gave me the opportunity to outline the importance of optimizing the “setup” phase of machines when using cloud computing.

Today’s tools and APIs make it very easy to create and destroy instances, but every time you do start a new instance, you’ve got to actually set it up to the state where it’s ready to do what you need (ie, be a web server, load balancer, database, whatever…).

This is an important phase to optimize: it’s the one where you’re paying for, but not yet able to use, the service :-)

Three approaches seem to co-exist here:

  1. Doing it manually: Obviously, this is one to avoid. Not only is it excessively time-consuming, but it’s also error-prone. (Ever tried doing the exact same complicated thing a dozen times over without making the odd mistake or going crazy?)
  2. Pre-configuring in static images: This is a very common approach. You know how you want things, so you set them up once, and make an image of that state (ISO, AMI, whatever…). You can then use your image to create your new machine just the way you want it, no time wasted! That’s great, but wears out over time -it’s a very brittle approach. If you ever need to change that configuration, not only will it take a while (get the image, change it, upload it again, etc…), but you also have no way of propagating the change to existing instances based on the old image.
  3. Using a configuration tool: That’s a deliberately vague title – I’m referring to any software approach to configuring your machine, be it a bunch of home grown scripts or a fully blown configuration management tool, such as CFEngine, Puppet or Chef.

If you’ve read any of the previous posts on this blog, you’ll know that we strongly favor the last approach :-)

Configuration management tools have many benefits over the previous approaches: using a dedicated, purpose-built tool to set up your servers means that you can reach new levels of control and flexibility, that you cannot achieve with static, brittle pre-built images. Need to make a change? Just update your reference configuration rules, and the change will be applied to all your instances, old and new, over the next few minutes.

Enough teasing, the slides below tell the rest of the story. I introduced the main tools I mentioned before, and provided a quick overview of how CFEngine works. Those at the session also got a sneak preview of our own open source project, Rudder, to be publicly announced very soon…

I’d welcome any comments on how you setup your cloud instances… and be happy to discuss all these topics at another open source conference in the future!

“Gestion de configuration et disaster recovery avec CFEngine 3″ aux RMLL 2011

July 8th, 2011 by Jonathan CLARKE | No Comments »

Comme chaque début de juillet, nous [1] nous rendons aux RMLL (Rencontres Mondiales du Logiciel Libre). Ce millésime se tient à Strasbourg, du lundi 11 au mercredi 13 juillet pour les conférences techniques (un weekend grand public se tient avant).

Nous y présenterons une session mercredi à 14:40 (au Patio, Amphi 3), en français, pour raconter notre vécu de la gestion de désastre et comment la gestion de configuration nous a aidé à nous en remettre. On détaillera également les raisons de notre choix d’outil, qui a porté sur CFEngine 3.

En espérant vous y voir nombreux ! N’hésitez pas à venir discuter avec nous, avant ou après la session, et nous nous ferons un plaisir de partager avec vous les dernières avancées que Normation a créé autour de la gestion de configuration…

[1] Toute l’équipe de Normation sera aux RMLL !

Formations Cfengine 3 à Paris et Bruxelles

May 10th, 2011 by Jonathan CLARKE | No Comments »

Cfengine 3 est un logiciel de gestion de configuration open source très puissant, permettant de gérer efficacement des parcs informatiques de toutes tailles. Comme la plupart des outils complexe, un temps d’apprentissage est nécessaire pour l’utiliser au mieux.

Nous organisons des sessions de formation à Paris, les 15, 16 et 17 juin, et à Bruxelles les 4, 5 et 6 juillet.

Trois formules sont disponibles :

  • Matinée d’introduction à la gestion de configuration (demie-journée non-technique)
  • Fondamentaux Cfengine (2 jours)
  • Industrialisation Cfengine (Fondamentaux + 1 jour)

Le détail du programme et les tarifs sont disponibles sur notre site web.

L’inscription est ouverte, contactez-nous pour vous inscrire. Plus que quelques jours pour profiter du tarif early bird !

Normation est partenaire officiel de Cfengine AS, et réalise des formations Cfengine certifiées à travers le monde.

Cfengine 3.1.5 is nearly out, what can we expect from it?

April 28th, 2011 by Nicolas CHARLES | 4 Comments »

Here at Normation, we use Cfengine 3 extensively for configuration management across Linux and Windows servers. Cfengine 3 is an open source project, and as every good open source project, the trunk version is always available (but not always very reliable) and stable versions are released regularly. Prior to the release of a new version, a beta version is available, for the community to test and rule out any bugs in the stable version.

We’ve been testing this beta version, and we are quite thrilled about it. This post won’t go through every detail of the changelog (Eystein is much better at it that I would be) but will run over the changes that improve our ways of using Cfengine.

Read the rest of this entry »

Scala Pitfalls For Java Refugees (SP4JR) #0: because what you think you know might be a hammer waiting for a thumb

April 15th, 2011 by François ARMAND | No Comments »

Java++… or something else?

This article is the first of what should be a really short series, because as you know, Scala is just Java++, and so the differences between the two are almost non-existent.

OK, I don’t think I could have said more wrong things in one sentence, so now, let’s be serious!

Scala is a great language. But at some point, it seems to have been advertised as (only) being a kind of Java++, what is utterly wrong and leads to bad expectations, which in turns leads to bad experiments and disappointment.

There is a swarm of reasons for that superstition, from early advertising by some Scala users, to the same bad advertising from Scala detractors, with the added confusion of a lot of ‘similarities’ between the two languages: both are statically typed, are compiled, run on the JVM, share some keywords, are Object Oriented, and so on.

So… where are the differences?

But when you look at the details, where the devil lies, you will see that there are a lot of differences. Just in the above ‘similarities’, each of them is more a likeness in wording than in the actual concept:

  • they both run on the JVM – and its ‘J’ part is quite heavy. To start with, it is not that friendly with foreign languages, although it’s getting better. Moreover, at the end of the compilation, whatever the language may have been saying, it’s the bytecode which is speaking. And sometimes it may be quite surprising, as we will see about visibility modifiers;
  • they are both Object Oriented, but Scala is both more pure than Java in that respect, and loaded with a lot of new concepts that have their subtleties. Sometimes, to fully understand why you get that NullPointerException, you will have to exactly understand these subtleties;
  • they are both statically typed, but I believe that Java is one of the worst things that happened to static typing, and Scala one of the best… So you will have to unlearn your a priori and learn what is real about static typing again, the first thing being: the type system is your friend, use it to all extents, and it is not something that stands high between your dreamed code and the actual reality;
  • they share some (a lot of) keywords… but when you only know Java you may be surprised by their semantics in Scala, and face unexpected results, just because you haven’t even considered that return is something completely different in each language.

Learning your new hammer

This series of articles will try to highlight some of these differences, so that you may have an idea in a glimpse of what may be unexpected. Of course, that may spoil some fun and WTF moments, so, please do not read the following articles if you want to leave the suspense untouched!

The goal is not to teach Scala: there are a lot of excellent tutorials around the net for that – one really good one among others being Scala For Java Refugees, from which I stole the title. So, a basic knowledge of Scala syntax will be assumed.

Hoping it will help, see you in the first article, SP4JR #1: “you don’t want to use return”.

Mounting partitions stored in a logical volume (or a disk image)

April 7th, 2011 by Jonathan CLARKE | No Comments »

With the increased use of virtualization has come the increased use of disk images (.iso, .vmdl, .qcow2, .vdi, etc) and LVM’s logical volumes (LV), as dedicated storage for Virtual Machines (VM). Frequently, when setting up a VM, several partitions are created within these disk images.

So, you end up with a machine (the virtualization host), usually installed across several partitions, one of which contains a filesystem containing a disk image or an LVM physical volume with some logical volumes, which in turn contain some more partitions, maybe containing a simple filesystem, or again containing a LVM or RAID volume, that again contains more partitions, etc. If this reminds you of Inception, then you already realize how hard it might be if you want to access on of those interior partitions directly from the host. However, sometimes you need to do just that, be it for disaster recovery or just plain backups.

This post show the method I successfully used to access such partitions. I had to find this out quickly recently, and couldn’t find any one blog post that covered this steps, so here it comes.

Read the rest of this entry »