Stateless Linux - Stateless Linux Server Configuration
The stateless server provides a number of services for stateless clients, including NFS, DHCP, Puppet, etc. This document will guide you through the most basic setup of a stateless server. This guide assumes you are building the server from scratch and that all the services will live on this new server.
Installing Fedora Core onto the Stateless Server
You will want to perform a generic installation of Fedora Core 7 or Fedora 7 onto your server, with one significant exception. Specifically, you will need to create three additional filesystems. The first should be mounted on
/export/NFSroots and should be at least 8G per unique diskless OS you want to support. The second should be mounted on
/export/private, 1G should be sufficient for
/export/private and the last should be mounted on
/var/www and should be at least 8G per unique OS you want to support.
There is no need to customize the installation beyond items such as the network configuration, timezone and keyboard layout. Later steps will install any additional packages needed by the stateless server.
Installing Additional Packages and Initial Configuration of the Stateless Server
The stateless server needs some additional packages to provide services to stateless clients. The easiest way to get the full set of packages necessary to run a stateless server is to install the Stateless
Server RPM via yum. Furthermore, installing the Stateless
Server RPM will also perform initial configuration of the server. To install the Stateless
Server RPM, perform the following operations.
$> wget http://people.redhat.com/~law/stateless.repo $> mv stateless.repo /etc/yum.repos.d/ $> yum -y install StatelessServer
It is desirable, but not necessary to install any released package updates. Note this step can take a long time to run since it may download a large number of packages from the internet.
$> yum -y update
DNS (aka bind) is used to manage the binding of names to IP addresses. The easiest way to set up bind is to ensure all the hosts you care about are in your
/etc/hosts file on the stateless server, then run
system-config-bind to import the
/etc/hosts file. After importing your host file, manually add an entry named "puppet" with the IP address of your stateless server. Save the configuration and quit
/boot/grub/menu.lst and change the default kernel to the
xen kernel. Finally, reboot your server.
Details of additional packages installed
tftp-server is used for provisioning new stateless clients and for booting diskless clients.
anaconda is used to instantiate root filesystems for NFS clients
httpd is used to provide OS metadata to clients when instantiating an OS image to a local disk
dhcp is used to provide MAC <-> IP translations and netboot information to stateless clients.
puppet-server is used to manage the small amount of persistent state/configuration files on stateless clients. For additional information on puppet see: http://reductivelabs.com/projects/puppet.
gnome-python2-gtkhtml2 is necessary for graphical instantiation of NFS root filesystems. It is not necessary for text mode install.
cobbler is used to manage distributions, profiles and bindings of systems (clients) to profiles. It also manages DHCP and tftpboot configurations for clients. For further information on cobbler see: http://cobbler.et.redhat.com.
rhpxl must be updated due to a dependency glitch in current versions of
createrepo is used to create a local yum repository with site specific packages such as the puppet master's certificate.
system-config-bind are used to provide DNS services for your stateless network.
rpm-build is used to build the RPM containing the Puppet Master's certificate.
syslinux is needed to tftpboot stateless clients
xen is used to instantiate virtual machines
Details of Configuration Steps Performed by the StatelessServer RPM
1. Cobbler is configured to use the IP address of the stateless server for all services. 1. Cobbler is configured to manage the stateless server's DHCP configuration file 1. tftp service is enabled on the stateless server. 1. NFS service is enabled 1. HTTP service is enabled 1. Ports are opened in the firewall for DHCP, TFTP, Portmap, NFS, lockd, mountd, SSH, HTTP, DNS and puppet 1. Initial puppet configuration and manifests are installed 1. Repository containing the puppet master's certificate is created