Install

Just do a basic install using ubuntu-18.04.3-live-server-amd64.iso

Prevent Floppy Errors

If your server does not have a floppy, Ubuntu will report errors. This can be prevented by preventing the loading of a floppy driver on the clients:

echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
sudo rmmod floppy
sudo update-initramfs -u

Enable Netowrking

The first time I built my VM, networking didn't install correctly. If this happens, create a netplan in /etc/netplans (note that because it's YAML, indentation is important)

network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
      dhcp4: true

Apply the netplan

sudo netplan apply

Verify that it worked

ifconfig

Host Name Setup

Ensure the Hostname is Set Correctly

sudo hostnamectl set-hostname puppet.bpopp.net

Modify the /etc/hosts file:

127.0.0.1 localhost
192.168.1.42 puppet.bpopp.net

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Install Foreman

Install Puppet

sudo apt-get -y install ca-certificates
cd /tmp && wget https://apt.puppet.com/puppet6-release-bionic.deb
sudo dpkg -i /tmp/puppet6-release-bionic.deb

There appear to be issues with puppet 6 and newer versions of foreman. Puppet 5 may work better:

wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
sudo dpkg -i puppet5-release-xenial.deb
sudo apt update

Enable Foreman

echo "deb http://deb.theforeman.org/ bionic 1.22" | sudo tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.22" | sudo tee -a /etc/apt/sources.list.d/foreman.list
sudo apt-get -y install ca-certificates
wget -q https://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -

Install

sudo apt-get update && sudo apt-get -y install foreman-installer

Run

sudo foreman-installer \
 --enable-foreman-proxy \
 --foreman-proxy-tftp=true \
 --foreman-proxy-tftp-servername=192.168.1.42 \
 --foreman-proxy-dhcp=true \
 --foreman-proxy-dhcp-gateway=192.168.1.1 \
 --foreman-proxy-dhcp-nameservers="192.168.1.1" \
 --foreman-proxy-dhcp-range="192.168.1.150 192.168.1.175" \

Add the Puppetmaster as Host

Seems to be helpful to restart the puppetmaster after installing. To add the puppetmaster as a host, run this from the master:

sudo /opt/puppetlabs/bin/puppet agent --test

Now add our first module:

sudo /opt/puppetlabs/bin/puppet module install puppetlabs/ntp

Import the module from foreman:

  • Click Configure > Classes
  • Select "Any Organization" and "Any Location" from the menus in the menubar at the top
  • Click the "Import environments from puppet" button
  • Check the box next the module and click the "Update" button

Configure Foreman

  • Click Infrastructure > Subnets > Create Subnet
  • Use the following settings:
    • Name: bpopp.net
    • Network address: 192.168.1.0
    • Network Prefix: 24
    • Network Mask: 255.255.255.0
    • Gateway Address: 192.168.1.1
    • Primary DNS: 192.168.1.1
    • Boot Mode : DHCP
  • In the tabs:
    • Under Domain tab, select bpopp.net
    • Under Proxies tab, select the puppet.bpopp.net proxies for DHCP, TFTP, and HTTPBoot
    • From Locations and Organizations, select Default Location/Organization

Configure Provisioning

For a CentOS box:

  • Click Hosts > Operating Systems > Create Operating System
  • Use the following settings:
    • Name: CentOS
    • Major Version: 7
    • Family: RedHat
    • Architecture: x86_64
  • From the tabs
    • In the partition table, select 'Kickstart default'
    • In the installation Media, select 'CentOS Mirror'

Create a Host Group

Host groups are used to quickly provision/configure servers of a specific type. For example, you can define a host group for Apache webservers that have all the correct modules installed for that specific type of server.