Skip to content

rAA in the News

Turbogears So my last entry, oh so many moons ago, mentioned that I was working on a new project. Now that that project has been released, I can talk about it, but better yet, how about an article about rPath Linux, what we're doing, and the rPath Appliance Agent (or rAA) which I helped design and build.

A little bit about rAA itself; it provides a pluggable framework for system configuration tasks, like setting up networking, setting the root password and checking for and applying software updates. There are some screenshots of rAA in action linked from the eWeek article above. rAA is written in python and built around TurboGears, a web application framework for RAD and MVC web development using Python.

rAA is Open Source Software, released under the Reciprocal Public License. A conary package group that can be added to a rBuilder Project to insert rAA into your own custom software appliance is available from the rAA Project.

Some basic documentation for rAA is available here. It's built with rPath Linux as an assumed installation platform, but several appliances have rAA built-in, and have VMware images available so you can try it out without installing a new Linux distribution.

Catching up

First of all it sucks to be sick. I don't know what I caught, nor where I caught it from, but now I'll be coughing for at least a week and my lungs are already sore from the last two days of hacking. I just hope that my wife and son don't catch it. Alex already has ear infections and a nasty cough coinciding with the arrival of four new teeth. At least his black eye is better.

A lot has happened since December, and I won't even begin to enumerate it all, just to tell you that I was working feverishly to get VMware and QEMU/RAW Hard Drive images working in rBuilder Online. With that task completed I am no longer working on rBuilder, instead I'm working with Ken VanDine and Xiaowen on something to be announced soon.

Yesterday I modified the PHPAppPackageRecipe class to make it more friendly to sofware upgrades. Previously the tarball containing the PHP application was extracted directly to /srv/www using whatever root folder was in the tarball. Then the recipe made a link connecting /srv/www/ to whatever folder was extracted. The problem with this arrangement is that if that directory contained the version, as many php apps do, the next version would be installed to a different location causing a manual step to move settings and data to the new folder.

Now the recipe extracts the application as most other packages do to the conary build folder. Then I copy the contents to /srv/www/ and eliminate the link. Hopefully this will ease upgrade pain. I rebuilt Gallery bumping its version to the newly released 2.1 and Serendipity in the LAMP rBuilder project so if you're running either of those be aware that there will be some one-time transitional pain. Feel free to contact me for help in upgrading to these new packages.

PHP Application Packaging

I spent some time this weekend packaging Gallery2 and Serendipity for rPath based Linux Distributions. As part of that effort, I built a conary recipe superclass to make packaging other PHP applications easier.

This class currently resides in the LAMP repository in the phpapppackage:source trove. The superclass handles creation of the apache configuration file to drop in to /etc/httpd/conf.d, provides stubs for creating empty files and directories for use by the PHP application, and sets up the requirement on PHP.

So, a new recipe for a simple application like gallery looks like the one here.

Notice the calls to MakeWriteableDirs and CreateWriteable. Those create the empty config files and directories needed by the application. These are created with ownership "apache", as which user the stock httpd server runs. Also notice the r.macros.dirconf macro. This data gets inserted into the apache configuration file between <Directory foo> directives so that you can set application specific php configuration values, or even set overrides.

If you use phpapppackage.recipe as a root class to package some other php application, shoot me an e-mail to let me know. I'd love to hear about it.

AJAX and rBuilder

For the past week or so, I have worked on creating a new AJAX-y group trove builder for rBuilder Online. This widget will allow anyone who can shop online to create new purpose built Linux images. The images can then be downloaded, burned to a CD-R, and installed, all in a day.

The best part of the work I've been doing is that it elegantly falls back to POSW (Plain old static web) when javascript is disabled. I do this by rewriting the urls on the page to make the AJAX calls to our XMLRPC interface to rBuilder Online. If the urls don't get rewritten, they will make page load calls to perform the same action. Continue reading "AJAX and rBuilder"