Goals:
Creating a Linux environment that can be used to practice and develop skills on all the major Linux infrastructure services. Such as Network services, Storage services, Web service platform, and DevOps service platforms(i.e. automation and monitoring).
References:
- https://www.lisenet.com/2018/homelab-project-with-kvm-katello-and-puppet/
Requirements:
- 8 CPUs (i7-2720QM).
- 26 GB of RAM.
- 128 GB of storage for KMV.
- 256 GB of storage for KVM images.
Home Lab Info Table

Homelab subnet is 10.16.2.0/24.
MAC address of each VM is configured in a way so that it always starts with 00:22:FF:00:00 but the remaining part is tied to the last byte of a VM’s IP address.
For example, a VM with the IP address of 10.12.2.15 would have a MAC address of 00:22:FF:00:00:15. This is important as we’ll be using PXE boot with static DHCP leases.
FQDN | MAC address | IPv4 address | ROM (GB) | RAM (MB) | Description | PXE boot | Katello agent | Puppet Managed |
---|---|---|---|---|---|---|---|---|
router.lnxark.local | 00:22:FF:00:01 | 10.16.2.1 | 8 | 256 | pfSense router | No | ||
dc01.lnxark.local | 00:22:FF:00:02 | 10.16.2.2 | 32 | 512 | DNS/DHCP primary, NTP, SMTP | No | Yes | No |
dc02.lnxark.local | 00:22:FF:00:03 | 10.16.2.3 | 32 | 512 | DNS/DHCP secondary, NTP, SMTP | No | Yes | No |
kadmin.lnxark.local | 00:22:FF:00:04 | 10.16.2.4 | 52 | 10240 | Katello/Puppet/TFTP/Pulp | No | Yes | No |
ldap01.lnxark.local | 00:22:FF:00:11 | 10.16.2.10 | 32 | 768 | LDAP primary | Yes | Yes | Yes |
ldap02.lnxark.local | 00:22:FF:00:12 | 10.16.2.11 | 32 | 768 | LDAP secondary | Yes | Yes | Yes |
netmon.lnxark.local | 00:22:FF:00:13 | 10.16.2.12 | 32 | 1024 | Zabbix server | Yes | Yes | Yes |
syslog.lnxark.local | 00:22:FF:00:14 | 10.16.2.13 | 32 | 2048 | Graylog server | Yes | Yes | Yes |
nfs01.lnxark.local | 00:22:FF:00:15 | 10.16.2.14 | 32 | 768 | NFS Pacemaker cluster node | Yes | Yes | Yes |
nfs02.lnxark.local | 00:22:FF:00:16 | 10.16.2.15 | 32 | 768 | NFS Pacemaker cluster node | Yes | Yes | Yes |
db01.lnxark.local | 00:22:FF:00:17 | 10.16.2.16 | 32 | 1024 | MySQL primary | Yes | Yes | Yes |
db02.lnxark.local | 00:22:FF:00:18 | 10.16.2.17 | 32 | 1024 | MySQL secondary | Yes | Yes | Yes |
hap01.lnxark.local | 00:22:FF:00:19 | 10.16.2.18 | 32 | 768 | HAProxy primary (with keepalived) | Yes | Yes | Yes |
hap02.lnxark.local | 00:22:FF:00:20 | 10.16.2.19 | 32 | 768 | HAProxy secondary (with keepalived) | Yes | Yes | Yes |
web01.lnxark.local | 00:22:FF:00:21 | 10.16.2.20 | 32 | 768 | Apache webserver primary | Yes | Yes | Yes |
web02.lnxark.local | 00:22:FF:00:22 | 10.16.2.21 | 32 | 768 | Apache webserver secondary | Yes | Yes | Yes |
bkup.lnxark.local | 00:22:FF:00:23 | 10.16.2.22 | 32 | 768 | Backup server | Yes | Yes | Yes |
In addition to the information provided in the table above, the following resources will be used as well.
FQDN | IPv4 address | Description |
---|---|---|
blog.lnxark.local | 10.16.2.30 | VIP for the WordPress website used by HAProxy |
nfsvip.lnxark.local | 10.16.2.31 | VIP for NFS used by Pacemaker |
Plan:
Step 1: Configue KVM on bare-metal
Step 2: Set up Admin servers with DNS/DHCP/NTP/SMTP. See links below.
>Step 2.1: Configure Bind DNS Servers with Failover and Dynamic Updates on CentOS 7
>Step 2.2: Configure DHCP Failover with Dynamic DNS on CentOS 7
>Step 2.3: Configure Peered NTP Servers on CentOS 7
>Step 2.4: Configure Postfix to Relay Mail to an External SMTP Server on CentOS 7
Step 3: Install Katello on CentOS 7
Step 4: Configure Katello services. See links below.
>Step 4.1: Katello: Create Products, Repositories, Content Views, Lifecycle Environments, Activation Keys
>Step 4.2: Katello: Import CentOS Errata into Pulp
>Step 4.3: Katello: Create a Domain, Subnet, Installation Media, OS, Provisioning Templates, Host Groups, PXE Boot
>Step 4.4: Katello: Working with Puppet Modules and Creating the Main Manifest
>Step 4.5: Katello: Separate Lifecycle for Puppet Modules
>Step 4.6: Katello: Security Compliance Management with OpenSCAP
Step 5: Configure OpenLDAP Master/Slave Replication with Puppet
Step 6: Configure Zabbix Monitoring Server with Puppet
Step 7: Configure Graylog Server with Puppet
Step 8: Configure MySQL Replication with Puppet
Step 9: Configure Active/Passive NFS Server on a Pacemaker Cluster with Puppet
Step 10: Configure Apache Server and Deploy WordPress with Puppet
Step 11: Configure HAProxy and Keepalived with Puppet