Hi FAI developers,

following patch for the experimental tree implements the possibility
to use a squashfs compressed config space downloaded via http.

I use a md5 checksum file to verify a complete download and to
minimize unneeded downloads of the config space to reduce bandwith.

I use this patch in an environment where a lot of client machines
will request the config space every two hours for FAI softupdate.

I use following small Makefile in my config space to create a
squashfs image and its checksum file:
all:
        rm /var/www/cspace/fai-cspace.img*
        mksquashfs . /var/www/cspace/fai-cspace.img -all-root
        (cd /var/www/cspace/ && md5sum fai-cspace.img > fai-cspace.img.md5)
        chmod 644 /var/www/cspace/fai-cspace.img*

My fai.conf variable is:
FAI_CONFIG_SRC=http://172.16.42.7/cspace/fai-cspace.img

A verified a successful installation on a Debian/squeeze host and
fai client. It also works fine on Ubuntu/lucid. Older Debian
releases are not supported, because of the missing squashfs kernel
support.

looking forward to get some feedback,

 Waldemar
Index: patches/squashfs-http.patch
===================================================================
--- patches/squashfs-http.patch (Revision 0)
+++ patches/squashfs-http.patch (Revision 0)
@@ -0,0 +1,60 @@
+--- trunk.orig/lib/subroutines
++++ trunk/lib/subroutines
+@@ -597,6 +597,11 @@
+     if [ $? -eq 0 ]; then
+       grep -q " $FAI nfs" /etc/mtab && umount $FAI
+     fi
++    # umount config space if accessed via squashfs image
++    echo $FAI_CONFIG_SRC | grep -q ^http://
++    if [ $? -eq 0 ]; then
++      grep -q " $FAI squashfs" /etc/mtab && umount $FAI
++    fi
+ 
+     if [ -f $stamp ]; then
+       echo "Error while executing commands in subshell."
+--- trunk.orig/lib/get-config-dir-http
++++ trunk/lib/get-config-dir-http
+@@ -0,0 +1,32 @@
++#!/bin/bash
++
++# (c) 2010 Waldemar Brodkorb <f...@waldemar-brodkorb.de>
++
++### BEGIN SUBROUTINE INFO
++# Provides-Var:
++# Requires-Var:    $FAI_CONFIG_SRC $FAI
++# Suggests-Var:
++# Short-Description: get $FAI by getting it via http
++### END SUBROUTINE INFO
++
++wget -q -t 3 -O /var/lib/fai/fai-cspace.img.md5 ${FAI_CONFIG_SRC}.md5 &&
++  echo "Getting checksum file"
++task_error 701 $?
++
++if [ -f /var/lib/fai/fai-cspace.img ];then
++      (cd /var/lib/fai ; md5sum -c fai-cspace.img.md5) &&
++        echo "Using existing FAI config space" ||
++        wget -q -t 3 -O /var/lib/fai/fai-cspace.img $FAI_CONFIG_SRC
++else
++      wget -q -t 3 -O /var/lib/fai/fai-cspace.img $FAI_CONFIG_SRC &&
++        echo "Configuration space successfully downloaded from $url"
++      task_error 702 $?
++fi
++
++(cd /var/lib/fai ; md5sum -c fai-cspace.img.md5) ||
++  echo "Checksum mismatch"
++task_error 703 $?
++
++mount -o loop /var/lib/fai/fai-cspace.img $FAI &&
++  echo "Configuration space mounted to $FAI via loop mount"
++task_error 704 $?
+--- trunk.orig/examples/simple/files/etc/fai/fai.conf/FAISERVER
++++ trunk/examples/simple/files/etc/fai/fai.conf/FAISERVER
+@@ -6,7 +6,7 @@
+ # If undefined here, make-fai-nfsroot/fai-setup will use default value
+ # nfs://<install server>/$FAI_CONFIGDIR
+ # supported URL-types: nfs, file, cvs, cvs+ssh, svn+file, svn+http,
+-# git, git+http, hg+http
++# git, git+http, hg+http, http
+ #FAI_CONFIG_SRC=nfs://yourservername/path/to/config/space
+ 
+ # LOGUSER: an account on the install server which saves all log-files
Index: patches/series
===================================================================
--- patches/series      (Revision 5748)
+++ patches/series      (Arbeitskopie)
@@ -7,3 +7,4 @@
 setup-storage_used-devs-only
 setup-storage_preserve-lazy
 setup-storage_lvm-preserve2
+squashfs-http.patch

Reply via email to