When managing multiple Ubuntu servers, Landscape from Canonical provides excellent centralized management capabilities. However, its proprietary nature and licensing costs make it inaccessible for many open-source enthusiasts and budget-conscious teams. The situation becomes more complex when managing heterogeneous environments with both Red Hat and Debian-based systems.
1. Foreman
Foreman is arguably the most robust open-source alternative, offering:
- Lifecycle management (provisioning, configuration, monitoring)
- Support for Ubuntu via Puppet modules
- API-driven architecture
Example provisioning command:
foreman-rake puppet:import:hosts_and_facts RAILS_ENV=production
2. Cockpit Project
Red Hat's lightweight web-based interface now supports Ubuntu:
sudo apt install cockpit
sudo systemctl enable --now cockpit.socket
For environments mixing RHEL and Ubuntu, consider:
Ansible AWX (the open-source version of Ansible Tower):
- name: Ensure packages are installed
apt:
name: "{{ item }}"
state: present
with_items:
- nginx
- postgresql
when: ansible_os_family == "Debian"
- name: Same for RHEL
yum:
name: "{{ item }}"
state: present
with_items:
- nginx
- postgresql
when: ansible_os_family == "RedHat"
MAAS (Metal-as-a-Service)
Canonical's own open-source provisioning system:
sudo apt install maas
sudo maas init region+rack --maas-url http://localhost:5240/MAAS
For Landscape's monitoring capabilities:
- Prometheus + Grafana stack
- Zabbix with Ubuntu templates
- Nagios Core with NRPE plugins
Example Prometheus alert rule for Ubuntu:
groups:
- name: Ubuntu alerts
rules:
- alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.9
for: 5m
labels:
severity: warning
annotations:
summary: "High memory usage on {{ $labels.instance }}"
When moving from Landscape:
- Export existing configurations via Landscape API
- Plan phased migration to avoid service disruption
- Test package management alternatives thoroughly
For teams needing both Ubuntu and RHEL management, the Ansible AWX + Foreman combination provides the most comprehensive solution, while Cockpit offers the simplest transition for basic needs.
When managing multiple Ubuntu machines in production environments, Canonical's Landscape provides excellent monitoring and system management capabilities through its web interface. However, its proprietary nature and licensing costs make open source alternatives particularly valuable for developers and system administrators.
Here are the most viable open source alternatives that support both Debian/Ubuntu and RHEL/CentOS systems:
- Foreman + Katello: Ruby-based infrastructure management with Puppet integration
- AWX (Ansible Tower Open Source): Python-based automation platform
- Cockpit Project: Red Hat's lightweight web-based interface
- Webmin/Virtualmin: Perl-based system configuration tool
Here's how to install Foreman on Ubuntu for Landscape-like functionality:
# Add Foreman repository
echo "deb http://deb.theforeman.org/ focal 3.0" | sudo tee /etc/apt/sources.list.d/foreman.list
echo "deb http://deb.theforeman.org/ plugins 3.0" | sudo tee /etc/apt/sources.list.d/foreman-plugins.list
# Install Foreman
sudo apt-get update && sudo apt-get install -y foreman-installer
sudo foreman-installer
For organizations managing heterogeneous environments, Ansible provides the most seamless cross-platform solution. Here's a sample playbook that works on both Ubuntu and RHEL:
---
- name: Common system setup
hosts: all
become: yes
tasks:
- name: Install common packages
package:
name:
- curl
- wget
- vim
state: present
when: ansible_os_family == 'Debian' or ansible_os_family == 'RedHat'
For Landscape-like monitoring capabilities, consider these open source options:
# Prometheus Node Exporter installation (works on both platforms)
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-*
cd node_exporter-*
./node_exporter &
The most challenging aspect is package management. Here's how to handle it programmatically:
# Python script to handle cross-platform package installation
import subprocess
import platform
def install_package(pkg_name):
distro = platform.linux_distribution()[0]
if 'Ubuntu' in distro or 'Debian' in distro:
subprocess.run(['apt-get', 'install', '-y', pkg_name])
elif 'Red Hat' in distro or 'CentOS' in distro:
subprocess.run(['yum', 'install', '-y', pkg_name])
For those needing a web UI similar to Landscape, these projects offer compelling alternatives:
- phpSysInfo - Lightweight PHP-based system information
- Linux-Dash - Node.js implementation with minimal requirements
- Zabbix - Comprehensive monitoring with web interface