Viper - steps in the host install process

Viper components scheme
(Click the image for full size)


For an overview, just read the page. Follow links if you are looking for more detailed information on individual steps.

  1. Boot from standard install media - use any standard Debian install media, no need for customizations. To boot from CD-Rom, use ready-made Debian CD/DVD images. To boot from USB stick, the easiest way is to install GUI program "unetbootin" and use it to create a bootable stick.

  2. Configure via DHCP - in this step, dhclient on the workstation will send a DHCP request. DHCP server will see the request and perform a query to LDAP, in an attempt to find the specific host (not just a random IP from the DHCP pool). When the request reaches LDAP, it will be rewritten and redirected as necessary (using features of the Viper slapd backend) to find the host entry. It is sufficient for the entry to only contain macAddress and ipHostNumber, Viper will construct all other options on the fly.

  3. Obtain preseed file - after obtaining IP and related options through DHCP, the host will request the preseed file, at url=http://server/d-i/DIST_NAME/preseed.cfg. In our setup, that file is a CGI script which performs a query to LDAP to produce the preseed file. LDAP is able to find the host for which the configuration should be generated based on the requestor's IP.

  4. Install (automatically) according to preseed - the installation proceeds. When everything has been preseeded correctly, no questions will be asked interactively. Only the minimal Debian system will be installed, plus Puppet and, optionally, some minimal .debs that will do the necessary preparations. (Those optional debs, if installed, do things like add LDAP support for Debconf and configure Debconf to use LDAP etc.)

  5. Reboot

  6. Puppet starts, configures everything - Puppet will start and contact puppetmasterd on server "puppet". The client can resolve the hostname because the IP was added to /etc/hosts during installation. The master server will produce configuration based on site manifests, modules etc., and "externalnodes" information (list of classes a host belongs to, and definitions of parameters (variables)). The external nodes script contacts LDAP to produce the information, we do not use Puppet's LDAP node terminus directly, because some extra processing is required.