Deployment
==========

This section describes how to (re-)deploy Puppet-managed Linux systems. The general process is:

1. Register the system with sysdb (only for new systems).
2. Tell sysdb to perform an installation on the next boot.
3. Reboot the system and trigger a PXE boot (usually by pressing F12 during
   POST).

On some systems it is not possible to use PXE boot. Either because the network
card doesn't support it/has a bug/doesn't work with iPXE, or because the system
is in a network from which TFTP requests to the boot server are not allowed. In
those cases it is possible to either boot iPXE from a USB stick or DVD, or to
simply boot the RHEL installer from DVD and point it at the Kickstart file
generated by sysdb.


Registration with sysdb
~~~~~~~~~~~~~~~~~~~~~~~

The easiest way to interact with sysdb is to use bob, a command-line client
written in Python. Alternatively it is possible to use the web API directly.

First, add the new node::

  bob node add $FQDN $ENV netboot


To be able to PXE boot we need to configure at least one MAC address for the new
node::

  bob node add-mac $FQDN 00:50:56:aa:fe:9b


Finally we need to configure the installer to use, and the Puppet-related
parameters::

  bob node set-attr $FQDN ipxe_installer=rhel79server
  bob node set-attr $FQDN network=static
  bob node set-attr $FQDN puppet_env=prod
  bob node set-attr $FQDN puppet_role=role::server
  bob node set-attr $FQDN puppet_group=default

  
Redeployment
~~~~~~~~~~~~

After the initial installation the boot mode has been reset from netboot to local
so it will then always boot from the local disk. For a redeployment the netboot 
needs to be set anew::

  bob node netboot $FQDN
  
and after redo the PXE boot.
