Weekly Snap: RootCamp & RVM for Ruby, Puppet Webinar & PDB++ for Python

weekly snap7 – 11 January was packed with events from the upcoming RootCamp, OSDC and a Puppet webinar to the first company ski trip, plus Python and Ruby tips to boot.
Eva explained unconferences, barcamps and what is to be expected at RootCamp on 24-25 May in Berlin. She also counted down 100 days to the OSDC 2013 with Olivier Renault’s ‘Introduction to Eucalyptus’.
More on events, Martin announced the first German language Puppet webinar on 24 January while Vanessa shared photos from our first Netways skiing trip.
Ronny then reminded us to manage Ruby and gem updates with RVM and Johannes recommended pdb++ for Python debugging.
To close the week, Christian shared good news that Teltonika ModemUSB5/10 now comes with an x64 driver for Windows.

Ruby Versionsverwaltung mit RVM

Aufgrund von aktuellen Warnungen einer Sicherheitslücke für die Skript-Sprache Ruby und dessen Framework Rails, möchten wir noch einmal die Versionsverwaltung von Ruby und dessen Gems mit RVM in Erinnerung rufen. Ich gehe daher jetzt nicht im Detail auf die Installation oder die Benutzung ein, sondern beschreibe eine einfache Möglichkeit, die Verwaltung und Pflege solcher Patches automatisiert durchführen zu lassen.
Denkbar ist dies z.B. mit Puppet, welches über Module für Ruby und RVM die Verwaltung übernimmt. Hier bildet sich die Abhängigkeit an die aktuelle oder eine bestimmt Version vom Ruby und den Gems. Update-Zyklen können bei jedem Lauf mit ausgeführt werden, welche bei Neuerungen einen Patch oder ein Update triggern. Somit können wichtige Patches über die Repos oder die Gems automatisch bei den Kontrollen des Puppets installiert werden.

Weekly Snap: RVM, KCachegrind & OSMC Program

25 – 29 July ended the month with tips from the development team, the finalised OSMC program and a little celebration of System Administrator Appreciation Day.
Sebastian introduced Ruby Version Manager (RVM) and how it enables different Ruby and Gem versions to be developed and tested side-by-side for complex projects. He showed how to switch between various versions and their Gems from the multi user installation, by manipulating the “PATH” variable and the ‘rvm use’ command. Installing additional Ruby versions is just as simple with ‘rvm install’, but he noted that development libraries and build tools must be installed beforehand. Sebastian commended RVM’s documentation as a good source of more tips and gave an example of how RVM can be tested once installed.
Keeping to the development efficiency theme, Jannis shared his tip for PHP profiling with KCachegrind to combat performance leakages. He recommended first installing XDebug and then using KCachegrind (or for Macs, QCachegrind) for visual representation. With these two simple tools, it is easy to see how long various methods take (absolute or relative to the execution time) as well as where and how often they are queried.
Last but not least, Pamela announced the program of the 6th Open Source Monitoring Conference on the 29 – 30 November. Featured speakers include: Michael Medin, NSClient++ Developer on “Distributed Monitoring Using NSClient++”, Mike Adolphs, Systems Administrator of XING AG on “Cucumber-Nagios: Behaviour Driven Infrastructure’s Entry into Monitoring” and Jeffrey Lensen, Systems Engineer of Hyves.nl on “Icinga at Hyves.nl”. Beyond two tracks of presentations in English and German, the OSMC will also offer three intensive workshops on “SLA Reporting with Nagios and Icinga”, “Configuration Management with Puppet” and “Icinga Kickstart” on the conference eve. Early bird specials are available till 15 August, so hurry!

Ein Ruby, mehrere Rubies – Ruby Version Manager

Ruby Version Manager (RVM) ist eine, hauptsächlich in Bash geschriebene, Versionsverwaltung diverser Ruby Versionen und zugehörigen Gems. Es ermöglicht die Nutzung verschiedener Ruby- und Gemversionen für unterschiedliche komplexe Projekte. Es werden beispielsweise nur Gems installiert, die ein individuelles Projekt benötigt, um ein mögliches späteres debuggen zu erleichtern. Außerdem können Projekte einfach und schnell in unterschiedlichen Ruby-Versionen getestet werden, oder auch bei Upgrades einzelner Gems kann schnell eine parallele unabhängige Testumgebung erstellt werden, ohne das Produktivsystem zu beeinflussen.
Die verschiedenen Ruby-Versionen und deren Gems werden in einer Multi-User-Installation z.B. unter /usr/local/rvm/{rubies,gems}/{ruby-1.8.7,ruby-1.9.2-p290}/ abgelegt und somit sauber voneinander getrennt. Der Wechsel zu einer anderen Version wird durch die Manipulation der “PATH” Variable im Bash-Enviroment vollzogen. Als Anwender setzt man hierfür lediglich das Kommando ‘rvm use 1.9.2’ ab.
Um zusätzliche Ruby-Versionen zu installieren, ist es ähnlich einfach: ‘rvm install 1.9.3’ Hierbei wird auf das Ruby-Git-Repository zurückgegriffen, das Stable-Release der angegebenen Version heruntergeladen, anschließend kompiliert und unter /usr/local/rvm installiert. Damit das auch reibungslos funktioniert, müssen vorher noch einige Entwicklungs-Bibliotheken und Build-Werkzeuge installiert werden. Unter Debian z.B. die Pakete ‘build-essential’, ‘libssl-dev’ und einige mehr und natürliche auch ‘curl’ und ‘git’, damit das Herunterladen des Repos und der Skripte klappt. Sämtliche Abhängigkeiten sind in der recht übersichtlichen RVM-Dokumentation gelistet: https://rvm.beginrescueend.com
Die eigentliche Installation von RVM geht schnell von der Hand. Es muss nur das Installationsskript ausgeführt werden: ‘bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)'
Die Funktionsweise kann nach der Installation von RVM wie folgt getestet werden:

$ rvm install 1.9.2
# rvm use 1.9.2
Using /usr/local/rvm/gems/ruby-1.9.2-p290
# ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
# which ruby
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby
$ rvm use system
# ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
# which ruby
/usr/bin/ruby
Sebastian Saemann
Sebastian Saemann
Head of Managed Services

Sepp kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.