The Foreman is an open source software for managing the lifecycle of physical and virtual servers. It's a server management solution that helps system administrators to perform server provisioning and configuration to the orchestration and monitoring. Foreman offers support for provisioning tools such as Puppet, Chef, Salt Stack, Ansible etc.
In this guide, we're going to show you the installation and configuration of the Foreman on Ubuntu server 18.04. We're going to install the Foreman using the Puppet Foreman installer on Ubuntu Server 18.04.
Prerequisites
- Ubuntu Server 18.04
- RAM Memory 4/2GB
What we will do?
- Setup FQDN
- Install Puppet 5
- Install Foreman
- Setup UFW Firewall
- Access Foreman Dashboard
- Add NTP Module to Foreman
- Run the Puppet Agent
Step 1 - Setup FQDN
Firstly, we need to configure FQDN (Fully Qualified Domain Name) of the Foreman server by changing the hostname and edit the '/etc/hosts' file.
Change the hostname of the system using the following command and change the domain name with your own.
hostnamectl set-hostname server.hakase-labs.io
Now edit the '/etc/hosts' file using vim editor
vim /etc/hosts
Change the IP Address and the domain name with your own and paste into it.
10.9.9.20 server.hakase-labs.io server
Save and close the file.
Now run the following command and make sure you get the IP address of the server FQDN.
ping $(hostname -f) -c 3
Step 2 - Add Puppet Repository
For this guide, we need to add the puppet repository to install the Puppet package to the Ubuntu system. Because we want to install the Foreman automatically using the puppet module installer script that's provided by the Foreman.
Install the ca-certificate package and download the Puppet repository package.
sudo apt install ca-certificates -y
cd /tmp && wget https://apt.puppetlabs.com/puppet5-release-bionic.deb
Now add the puppet repository using the following command.
sudo dpkg -i /tmp/puppet5-release-bionic.deb
Step 3 - Install Foreman
In order to install the Foreman to the system, we must add the foreman repository.
Add the Foreman repository by running the following command.
echo "deb http://deb.theforeman.org/ bionic 1.20" | sudo tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 1.20" | sudo tee -a /etc/apt/sources.list.d/foreman.list
Now add the Foreman key.
wget -q https://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
After that, update ubuntu repositories and install the 'foreman-installer' package using the following commands.
sudo apt update
sudo apt install foreman-installer -y
Now the foreman-installer package has been installed, run the installer command below.
sudo foreman-installer
When the installation is complete, you will get the admin user and password of the Foreman dashboard as below.
Step 4 - Configure UFW Firewall
After the foreman installation, we need to open some ports that are needed by the Foreman.
Run all ufw following command below.
ufw allow http
ufw allow https
ufw allow ssh
ufw allow 69/udp
ufw allow 8140/tcp
After that, start and enable the ufw firewall service.
ufw enable
Step 5 - Access the Foreman Dashboard
Now open your web browser and type the foreman server IP or domain name on the address bar, in my case 'https://server.hakase-labs.io/'.
And you will get the Foreman Login Page.
Log in with the user 'admin' and the password given on the top, and you will get the Foreman Dashboard.
Step 6 - Add NTP Module to Foreman
The NTP module was needed by the puppet master to keep the time accurate. And we will be using the Foreman to manage the NTP service on the Foreman host (which also as the puppet master).
- Install Puppet Module for managing the NTP
Install the puppet module for managing the NTP service to the foreman host using the following command.
sudo /opt/puppetlabs/bin/puppet module install puppetlabs/ntp
And you will get the result as below.
- Enable and Configure NTP Puppet Module
After the puppet module installation, we need to enable and configure the NTP module through the Foreman dashboard.
Log in to the Foreman dashboard, click the menu on the left.
Configure - Puppet - Classes.
Click the 'Import Environment from server.hakase-labs.io' button.
Enable the NTP puppet module by ticking the checkbox and then click the Update button.
The puppet module for managing the NTP service has been enabled.
After that, we will override the default of NTP server configuration using our own custom server.
On the 'Puppet Classes' page, click the NTP module.
Now click the 'Smart Class Parameters' tab, then click the 'Server' parameter on the left side.
Tick the 'Override' checkbox, change the key type to 'array', and then input the default value with the custom NTP server pool.
["0.id.pool.ntp.org","1.id.pool.ntp.org","2.id.pool.ntp.org","3.id.pool.ntp.org"]
Click the 'Submit' button at the bottom and the NTP puppet module configuration has been completed.
- Configure Host to use the Puppet Module
Show all available hosts on the Foreman by choosing the 'Host' menu on the left side, then click 'All Hosts'.
After that, choose the host that you want to apply the NTP puppet module and click the 'Edit' button.
Click on the Puppet Classes tab and you will get all available puppet module on the Foreman. Under the Available Classes, expand the NTP class module and click the plus sign next to "ntp".
Now click the 'Submit' button and the puppet module for managing the NTP server has been added to the Foreman Puppet Master server.
Step 7 - Run the Puppet Agent
Log in to the Foreman server and run the following puppet command below.
sudo /opt/puppetlabs/bin/puppet agent --test
And you will get the result as below.
The server will automatically installed and configured the NTP service using our custom configuration.
After it's complete, check the '/etc/ntp.conf' configuration file.
cat /etc/ntp.conf
Ensure you get the NTP configuration managed by puppet using the custom server pool that's already defined on the Foreman dashboard.