FAI (Fully Automatic Installation) is a non-interactive system to avoid the boring and repeating task of installing, customizing and managing Linux systems manually. Nowadays FAI is used for maintaining chroot environments, virtual machines as well as physical boxes in setups ranging from a few single systems up to deployments of large-scale infrastructures and clusters with several thousands of systems.
With the so called config space the system administrator defines the hard disk layout, file system, software packages, keyboard layout, time zone, user accounts, etc. within FAI. Quoting FAI's website:
[FAI is] a tool for mass unattended Linux installation. You can take one or more virgin PC's, turn on the power, and after a few minutes, the systems are installed, and completely configured to your exact needs, without any interaction necessary.
Whereas Debian installer preseeding is meant to automize the base installation process only, FAI takes care of rollout, deployment, provisioning and to some extends configuration management as well.
Last weekend InfoQ had the chance to meet Thomas Lange at linuxdays in Chemnitz/Germany. Thomas Lange is the project leader of FAI and just released its version 3.3.4.
InfoQ asked Thomas Lange, project leader of FAI, to talk about his background in IT:
I studied computer science at university Bonn and am working as sysadmin since more than 18 years. About 10 years ago I had to set up a cluster consisting of 16 computers. As I'm lazy (I consider myself a typical sysadmin) I didn't want to do the installation procedure manually. Back those days I knew and used Solaris' Jumpstart to deploy Solaris systems. I decided to work on something similar for Debian. The output is what's known as FAI nowadays. I invested lots of time to be lazy. :) But you can deploy your systems *fully* automated nowadays. By the way, at the end of 2009 FAI celebrated its 10th birthday.
Asked for the most important and interesting features of FAI, Lange said:
FAI is very flexible. Sysadmins can realize exactly what they want. You aren't limited by what the *tool* thinks could be the best for you. Instead you adjust and create your own scripts, hooks and configuration to adjust and extend the deployment process according to your needs. This makes it a bit harder for the beginner but gives the experienced FAI sysadmin a swiss army knife.
For example the partition tool in FAI, known as setup-storage, is a flexible component. You don't have to specify the exact partion size (but of course can if you want to). Instead you instruct FAI e.g. to use 10% of the disk as rootfs, 2-4GB for swap and use the rest as data partition. The tool also provides decent support for Logical Volume Management as well as Software RAID.
What was important for me when designing and implementing FAI was a proper readable and writeable configuration format. In my opinion XML isn't what a sysadmin typically wants to deal with. That's why FAI uses simple configuration files meant to be stored in your favourite version control system and easy to read and write manually.
Another notable feature is the class based approach. You don't have to configure everything in one single file but instead abstract your hardware and software configuration. The parts that are common throughout all your systems go to a base class you always use. Depending of architecture, present hardware and hardware configuration you enable specific features just as necessary and requested. This applies to the software selection as well of course. So it's easy to provide a base class which selects all the core software packages you want to install on every host, whereas your desktop systems get additional software packages which might diverge from the server systems.
The experienced senior sysadmin works on the initial class design. The junior admin runs the actual deployment like setting up hardware, integrating new hardware,... then. This flexibility combined with the class based approach is what brings FAI to enterprise level in my opinion.
Talking about the requirements for using FAI, Lange explained:
To use FAI for deployment you need DHCP, NFS, HTTP and TFTP servers and of course the FAI software itself. To get started I strongly recommend to walk through the FAI guide, available online at http://fai-project.org/guide
InfoQ asked Lange about the roadmap for upcoming versions of FAI, so users get an idea what they might enjoy in the future:
For the upcoming version I want to see decent Debian packages for Ubuntu so deployment of Ubuntu desktops works fine. We are working on providing setup-storage as independent part of the suite so it can be used outside of FAI as well. I also want to get support for Grub2 soon.
At the end of the interview Thomas Lange wanted to share something with InfoQ's readers:
I want to point out the FAI user reports. I encourage users of FAI to fill out the FAI questionnaire at http://fai-project.org/reports so we know who are our users, which are the feature they actually use and what problems might be still present. FAI became the decent deployment solution because of its users and their feedback. So please provide feedback and share your thoughts with us.