*nix

aptitude bug in specific version handling

Aptitude has an annoying bug, which will probably never be fixed upstream :( - but aptitude is the only tool that supports downgrading of package versions (with correct --force options) none-interactively (as done by f.ex. puppet).

If you want to install a package in a specific version (f.ex. for releasing site code in a specific version) - like this:

expect: send many commands to routers and such

A neat script I pieced together - to send many commands (f.ex. deletion of objects etc.) to a box (using ssh) - input from a file (remember to atleast use a proper random name for the file etc. :)

Grave PHP bug segfaults drupal sites

I just hit a grave bug, while performance testing a customers drupal site - the apache segfaulted each and every time, after a few 100 requests at the most. The setup had long been plagued by random segmentation faults / complaints about canary problems from suhosin, which wasn't reproducible (or we hadn't spent the time to try), but this time it died consistently.

New linuxpusher.com site

Ever since I redid Linuxpusher.dk (as it were - not it's .com) in oscommerce, I've sorely missed some CMS functionality and I only switched because the shop part of the CMS systems I had found were sorely lacking in this, primary part.

I finally found a system that, while not perfect, was good enough to be a considerable improvement to the functionality of the linuxpusher.com site, and also I finally found the time to do it.

Among the new features are:

Mythtv recording problems - a workaround

Since the arrival og dvb-t in Denmark, I've been playing with mythtv - with mythbackend on my qnap ts-119 (1200mhz, 512mb ram - installed debian on it), inspired by Andreas Back Aaen running mythbackend on a 400mhz Buffalo linkstation.

Unfortunately I decided to go with v0.22 (the latest), and it seems it has several issues with the dvb-t signals in this region :(

Dell Open Manage (omsa) - auto setup via puppet

Dell's OpenManage is a pain to install manually. Luckily someone provides deb files,  but even when using them, there's a lot of "details" - also some depending on if you're using 64bit arch or not.

I decided to write a module to automaticly install of the the OMSA software on Debian Lenny (should work on Ubuntu - and could easily be extended to CentOS and others). I choose to include a few pam-files from 32bit Lenny - as there's no 32bit package for 64bit arch's and omsa needs them to auth you against pam.

extlookup - a puppet extension you can't live without

I've been using puppet for a while now, and have had to, grudgingly, add an if $hostname == "somehostname" several places in modules and in my general templates.pp.

Until now I could find no other option to properly control things, without having to have a subclass for each special case - which is too much in some situations.

I was recently informed about extlookup (from Volcane (ircname) - the author) - a one-stop solution to removing all those annoying dependencies on specific hostnames.

http://nephilim.ml.org/~rip/puppet/extlookup.rb

Backup up your brocade switch config

I wanted to backup a brocade san switch configuration, and tried SaveSimplyYourSan - but it wouldn't do ssh - and using telnet, uploading config to ftp - is too unsecure for my taste.

I ended up writing a small expect script that looks like this:

do you use sh or bash for scripts?

I've often heard people say that you should use #!/bin/sh in your shell scripts to ensure they run everywhere.

I always use /bin/bash - because I like the bash-specific features and wouldn't like to live without, and I don't have a list in hand that shows me which "features" I can't use if using /bin/sh - so I can't be sure my script actually works on generic /bin/sh - without testing.

Why I enjoy puppet

Having to configure 17 servers that have to be absolute alike and other such details, made me setup puppet to do the job. I've used cfengine before, so I was looking forward to using puppet for a larger project and see if it made me as happy as I'd hoped (compared to using cfengine which can be a bit tedious :)

The general goal is that everything is setup up by puppet, so that the restore plan is as simple as possible: