Mac OS X mit Ansible konfigurieren

(see below for english content). Nachdem wir Github Boxen (basierend auf Puppet) zum installieren unserer Macs ausprobiert haben, sind wir letztendlich bei Ansible gelandet. Jetzt haben wir unsere Methodik auf GitHub veröffentlicht.

Das Problem

Wir entwickeln in recht vielen Programmiersprachen, benötigen eine ganze Reihe von Tools und wollen Neuinstallationen (z.B. bei neuen Mitarbeitern oder Hardware-Ausfällen) beschleunigen. Die Nutzung von Vagrant o.ä. fanden wir immer etwas zu "schwergewichtig".

Wir nutzen schon seit längerem Server-Automationstools für die Konfiguration unserer Server (zuerst Puppet, dann Chef). Daher war es naheliegend, auch diese Tools für die Konfiguration unserer MacBooks zu verwenden. Nachdem wir auf GitHub Boxen (basierend auf Puppet) gestoßen sind, haben wir dies auch recht schnell eingesetzt.

Leider hat sich Boxen für uns als relativ instabil herausgestellt – das mag auch daran liegen, dass wir in der Ruby-Welt (Gems, Bundler, Librarian, ...) nicht so richtig zu Hause sind. Bei jeder Systeminstallation ging irgend etwas schief, und es war recht kompliziert zu debuggen und zu installieren.

Ansible betritt die Bühne

Ich wollte schon seit Längerem Ansible ausprobieren, da es sich sehr leichtgewichtig anfühlte. Vor Kurzem bin ich dann auch ein Projekt gestoßen, welches Ansible für die Mac OS X-Automatisierung verwendet. Nach genauerer Betrachtung hat sich herausgestellt, dass man hierfür eigentlich gar kein spezielles Projekt benötigt – Ansible Core läuft wunderbar auf Mac OS X.

Wir haben, nach einem Tag Testphase, uns sehr schnell entschieden, von Boxen zu Ansible zu migrieren – und dies bereuen wir bis heute nicht, im Gegenteil. Mittlerweile pflegt das ganze Team die Konfiguration; jeder fügt mal etwas hinzu oder baut einen Teil um. Selbst wenn mal ein Fehler auftritt ist dieser sehr schnell behoben.

Wollt ihr auch haben?

Wir haben unser Ansible-Konfigurations-Git-Repository (ohne die firmenspezifischen Teile) auf GitHub gestellt. Viel Spaß beim Forken; wir freuen uns sehr über Pull Requests und Feedback!

PS: Wir sind immer auf der Suche nach neuen Teammitgliedern, die uns verstärken! Bewerbungen nehmen wir jederzeit auf team(at)sandstorm-media.de entgegen.

English: Configuring Mac OS X with Ansible

After we have used Github Boxen (which is based on Puppet) for installing out Macs, we have finally settled on Ansible. Now, we have published our ansible repository on GitHub.

The Problem

We're developing in quite a lot of different programming languages, need a bunch of different tools and want to speed up fresh installations (e.g. in case of hardware defects or new team members). Using Vagrant and alternatives always felt a bit too "heavyweight" for us.

On our servers, we're using automation tools since quite some time (first puppet, now chef). That's why we tried out using these tools for configuring out MacBooks. After we found GitHub Boxen (which is based on Puppet), we used that quite quickly thereafter.

Unfortunately, Boxen was quite unstable for us – maybe because we're not really at home in the Ruby world with all its Gems, Bundler, Librarian, ... On every system installation, something went wrong and it was difficult to debug and fix.

Meeting Ansible

I wanted to try Ansible since quite some time, as it felt very lightweight. A short time ago, I then found a project which uses Ansible for automatic Mac OS X. After checking it out in detail, I saw that a layer on top of Ansible is actually not needed at all. Ansible Core works wonderfully on Mac OS X.

After one day of testing, we decided very rapidly to switch from Boxen to Ansible – and this decision still pays off today. Nowadays, the whole team updates our shared configuration, adds a part of refactors another one. Even if an error occurs, it's usually easy to fix.

You want to use that, too?

We have removed everything specific to our company from our git repository, and put it on GitHub. Have fun forking it; we'd really appreciate Pull Requests and feedback!

PS: We're always looking for new team members who'd like to join us! Please send your application to team(at)sandstorm-media.de.