Overview
========

Documentation
-------------

This guide is written using jupyterbook that accepts both ReStructured Text files (that's the system that was used initially)
and Markdown.

Deployment
----------

We generally deploy systems using PXE/Kickstart, even VMs. There is a VM
template, but it only defines the standard hardware/VM settings. No software is
pre-installed.

We use an iPXE image, which retrieves its client-specific configuration from a
web service, which also generates the client-specific Kickstart file.

For systems where network booting isn't possible, eg. because DHCP isn't
available, we can boot from USB as well.

The installation process is very roughly:

1. Install a minimal system plus the Puppet agent using Kickstart
2. Reboot
3. On first boot, run Puppet, which installs/configures the rest


OS, Software, and Licenses
--------------------------

We use Red Hat Enterprise Linux 7 (aka RHEL 7). The licenses are provided by
ETHZ, and we mirror the software from their Satellite server locally. We do not
have direct access to Red Hat support, but we can access the Red Hat customer
portal.

In addition to RHEL, we use/make available the following:

- EPEL (all of it)
- ELREPO (mostly for the Nvidia drivers)
- Puppet
- NoMachine

In addition there are several internal repositories.


Configuration Management and Automation
---------------------------------------

We use `Puppet <https://puppet.com>`_ for configuration management on Linux
systems. Configuration data is managed using `Hiera
<https://puppet.com/docs/puppet/5.3/hiera_intro.html>`_.

Scripts are generally written in bash or Python.
