Child Host Management
Comprehensive guide to creating, managing, and monitoring child hosts including WSL instances, containers, and virtual machines within your SysManage infrastructure.
Professional+ Required for Write Operations
Creating, starting, stopping, restarting, and deleting child hosts requires a Professional+ license with the container_engine module. Viewing child hosts and distributions remains available in the Community Edition.
Overview
Child host management in SysManage enables you to create and manage virtualized environments directly from the web interface. This includes Windows Subsystem for Linux (WSL) instances, LXD/LXC containers, and various virtual machine technologies. Child hosts are automatically registered as managed hosts with the sysmanage-agent pre-installed.
Key Concepts
- Parent Host: The physical or virtual machine that hosts child environments
- Child Host: A virtualized environment (WSL, container, or VM) running on a parent host
- Distribution: The operating system image used to create child hosts (e.g., Ubuntu, Debian, Fedora)
- Virtualization Type: The technology used (WSL, LXD, VirtualBox, Hyper-V, KVM, etc.)
- Agent Auto-Installation: Child hosts automatically receive the sysmanage-agent during creation
Supported Virtualization Types
- WSL (Windows Subsystem for Linux): Run Linux distributions on Windows hosts
- LXD/LXC: Linux containers for lightweight virtualization
- VirtualBox: Cross-platform virtual machine management
- Hyper-V: Windows native hypervisor support
- KVM/QEMU: Linux kernel-based virtualization
- VMM/vmd: OpenBSD virtual machine monitor
- bhyve: FreeBSD hypervisor
Virtualization Detection
Automatic Detection
SysManage automatically detects virtualization capabilities on each managed host. The agent queries the system to determine which virtualization technologies are available and reports this information to the server.
Detected Capabilities
- Hardware Virtualization: CPU support for VT-x/AMD-V extensions
- Installed Hypervisors: Which virtualization software is installed
- Enabled Features: Which features are enabled and ready to use
- Pending Configuration: Features that require a reboot to enable
WSL Detection on Windows
On Windows hosts, SysManage detects WSL status and can automatically enable WSL if it's not already configured:
- Not Installed: WSL feature is not enabled - can be enabled via SysManage
- Needs Reboot: WSL was enabled but requires a system restart
- Ready: WSL is enabled and ready to create child hosts
Child Hosts Tab
Accessing Child Hosts
The Child Hosts tab is available on each host's detail page for hosts that support virtualization:
- Navigate to Hosts in the main menu
- Select a host that supports virtualization
- Click the "Child Hosts" tab
Tab Information
The Child Hosts tab displays:
- Virtualization Status: Shows enabled virtualization types and any pending configuration
- Child Host List: All child hosts with their status (running, stopped, creating, error)
- Action Buttons: Create, start, stop, restart, and delete child hosts
- Enable Button: Enable WSL or other virtualization if not yet enabled
Creating Child Hosts
Professional+ Required
Creating child hosts requires a Professional+ license with the container_engine module. Community Edition users can view existing child hosts but cannot create new ones.
Prerequisites
- Virtualization must be enabled on the parent host
- User must have the "Create Child Host" permission
- Desired distribution must be enabled in Settings > Distributions
- Network connectivity for downloading distribution images
Creation Process
- Click "Create Child Host" button on the Child Hosts tab
- Select the virtualization type (if multiple are available)
- Choose a distribution from the dropdown list
- Enter a hostname for the new child host
- Provide a username and password for the initial user account
- Click "Create" to start the installation process
Form Fields
- Virtualization Type: WSL, LXD, VirtualBox, etc. (based on host capabilities)
- Distribution: The operating system to install (e.g., Ubuntu 24.04 LTS)
- Hostname: Unique identifier for the child host (suggested format: parent-wsl-distro)
- Username: The non-root user account to create
- Password: Password for the new user account (not stored by SysManage)
Installation Progress
During creation, SysManage shows real-time progress including:
- Distribution download (if not cached)
- Installation and configuration
- User account creation
- Agent installation and configuration
- Initial startup and connection
Host Approval Required
After creation completes, the new child host's agent will connect to the server. An administrator must approve the new host in the Hosts list, just like any other new agent registration. Once approved, the child host becomes fully managed.
Managing Child Hosts
Professional+ Required for Lifecycle Actions
Starting, stopping, restarting, and deleting child hosts requires a Professional+ license with the container_engine module. Viewing child host status remains available in the Community Edition.
Available Actions
Start
Starts a stopped child host. The child will boot and begin reporting to SysManage.
Required Permission: Start Child Host
Stop
Gracefully shuts down a running child host. All processes within the child are terminated.
Required Permission: Stop Child Host
Restart
Stops and then starts the child host. Useful for applying configuration changes.
Required Permission: Restart Child Host
Delete
Permanently removes the child host and all its data. This action cannot be undone.
Required Permission: Delete Child Host
Warning: Data Loss
Deleting a child host permanently removes all data stored within it. For WSL, this runs 'wsl --unregister' which completely removes the distribution. Ensure you have backups of any important data before deletion.
Status Indicators
- Running: Child host is active and responsive
- Stopped: Child host is shut down
- Creating: Installation is in progress
- Pending Approval: Agent is waiting for administrator approval
- Error: An error occurred - check details for more information
Hosts List Integration
Filtering Child Hosts
The main Hosts list includes a filter toggle for child hosts:
- All Hosts: Shows both parent and child hosts
- Parents Only: Hides child hosts from the list
- Children Only: Shows only child hosts
Distribution Management
Professional+ Required for Distribution Changes
Adding, editing, and deleting distributions requires a Professional+ license with the container_engine module. Viewing available distributions remains available in the Community Edition.
Accessing Distribution Settings
Manage available distributions through:
Settings > Distributions
Distribution Operations
- Add Distribution: Add new distributions with install identifiers and agent configuration
- Edit Distribution: Modify distribution settings, install commands, or display names
- Enable/Disable: Control which distributions are available for child host creation
- Delete Distribution: Remove distributions that are no longer needed
Agent Installation Methods
Each distribution specifies how to install the sysmanage-agent:
- APT (Launchpad PPA): For Ubuntu and Debian-based distributions
- DNF (COPR): For Fedora, RHEL, Rocky Linux, AlmaLinux, and Oracle Linux
- Zypper (OBS): For openSUSE and SLES distributions
- Manual: Custom installation commands for other distributions
WSL-Specific Information
Requirements
- WSL version 2 (WSL v1 is not supported)
- systemd support (enabled automatically during creation)
- Windows 10 version 2004 or later, or Windows 11
Enabling WSL
If WSL is not enabled on a Windows host, SysManage can enable it automatically:
- Click "Enable WSL" on the Child Hosts tab
- The agent will run the necessary Windows commands
- A reboot may be required - the host will show "Reboot Required"
- After reboot, WSL will be ready for use
Supported WSL Distributions
SysManage ships with pre-configured support for distributions where sysmanage-agent packages are available:
Debian/Ubuntu Family (APT)
- Ubuntu 24.04 LTS (Noble)
- Ubuntu 22.04 LTS (Jammy)
- Debian 12 (Bookworm)
Fedora/RHEL Family (DNF)
- Fedora
- Rocky Linux 9
- AlmaLinux 9
- Oracle Linux 9
openSUSE Family (Zypper)
- openSUSE Tumbleweed
- openSUSE Leap 15
LXD-Specific Information
Overview
LXD (pronounced "lex-dee") is a next-generation system container and virtual machine manager for Linux. SysManage supports LXD containers as child hosts, providing lightweight virtualization with near-native performance.
Requirements
- LXD must be installed on the parent host (typically via snap)
- LXD must be initialized (
lxd init) with a storage pool and network bridge - A network bridge (typically
lxdbr0) configured for NAT - The sysmanage-agent user must be a member of the
lxdgroup - Linux host (Ubuntu, Debian, or other distributions with LXD support)
LXD Detection
SysManage automatically detects LXD when:
- The
lxccommand is available on the system - LXD is properly initialized with at least one storage pool
- A network bridge is configured and active
When LXD is detected and functional, the host will display "LXD Host" as one of its server roles.
Setting Up LXD
If LXD is not already configured on your Linux host:
- Install LXD:
sudo snap install lxd - Initialize LXD:
sudo lxd init(accept defaults for simple setup) - Add sysmanage-agent to the lxd group:
sudo usermod -aG lxd sysmanage-agent - Restart the sysmanage-agent service to apply group changes
Container Creation Process
When creating an LXD container, SysManage performs the following steps:
- Downloads the container image from the configured image server (images.linuxcontainers.org)
- Creates the container with the specified hostname
- Attaches the container to the default network bridge
- Starts the container and waits for network connectivity
- Creates the specified user account with sudo privileges
- Installs the sysmanage-agent from the appropriate package repository
- Configures the agent to connect to your SysManage server
- Starts the sysmanage-agent service
Networking
LXD containers are attached to the default network bridge (typically lxdbr0). The bridge provides:
- DHCP: Automatic IP address assignment from the bridge's subnet
- NAT: Outbound internet access through the parent host
- DNS: Name resolution via the bridge's built-in DNS
The container's IP address is displayed in the child host details and in the managed host information after agent approval.
Supported LXD Distributions
SysManage supports creating LXD containers from distributions where sysmanage-agent packages are available:
Debian/Ubuntu Family (APT)
- Ubuntu 24.04 LTS (Noble)
- Ubuntu 22.04 LTS (Jammy)
- Debian 12 (Bookworm)
Fedora/RHEL Family (DNF)
- Fedora
- Rocky Linux 9
- AlmaLinux 9
- Oracle Linux 9
openSUSE Family (Zypper)
- openSUSE Tumbleweed
- openSUSE Leap 15
LXD vs WSL
| Feature | LXD | WSL |
|---|---|---|
| Host OS | Linux | Windows |
| Isolation | Full container isolation | Lightweight subsystem |
| Networking | Bridged with own IP | NAT through Windows |
| Performance | Near-native | Near-native |
| Storage | ZFS, btrfs, dir, LVM | Virtual disk (ext4) |
| Multiple instances | Yes, unlimited | Yes, unlimited |
KVM/QEMU Virtual Machine Management
Overview
KVM (Kernel-based Virtual Machine) is a virtualization technology built into the Linux kernel. Combined with QEMU for hardware emulation and libvirt for management, it provides enterprise-grade virtual machine capabilities. SysManage integrates with KVM/libvirt to enable seamless VM creation and lifecycle management from the web interface.
Requirements
- CPU with hardware virtualization support (Intel VT-x or AMD-V)
- Linux kernel with KVM modules (
kvm,kvm_intelorkvm_amd) - libvirt daemon installed and running (
libvirtd) - QEMU with KVM acceleration support
- libvirt default network or custom network bridge configured
- The sysmanage-agent user must be in the
libvirtgroup - Only available on Linux hosts
KVM Host Detection
SysManage automatically detects KVM capability by checking:
- KVM kernel modules are loaded (
/dev/kvmexists) - libvirt daemon is running and accessible
- The
virshcommand is available and functional - At least one libvirt network is configured
When detected, the host is assigned the KVM Host role and KVM appears as an available virtualization type.
KVM Setup
To prepare a host for KVM virtual machine management:
- Verify CPU virtualization support:
grep -E 'vmx|svm' /proc/cpuinfo - Install KVM packages:
sudo apt install qemu-kvm libvirt-daemon-system(Debian/Ubuntu) orsudo dnf install qemu-kvm libvirt(Fedora/RHEL) - Enable and start libvirtd:
sudo systemctl enable --now libvirtd - Add agent user to libvirt group:
sudo usermod -aG libvirt sysmanage-agent - Configure the default network:
sudo virsh net-autostart default && sudo virsh net-start default - Restart the sysmanage-agent service to pick up group membership
Alternatively, click "Enable KVM" in the SysManage web interface to automate these setup steps.
VM Creation Process
When creating a KVM virtual machine through SysManage:
- SysManage downloads the cloud image from the distribution's official source
- A new disk image is created and the cloud image is applied as a backing store
- Cloud-init configuration is generated with hostname, user account, and agent settings
- The VM is defined in libvirt with the specified resources (CPU, memory, disk)
- VM boots and cloud-init configures the system, creates the user, and installs the agent
- The sysmanage-agent service starts and connects to your SysManage server
- The VM appears in the Hosts list pending approval (or auto-approved if selected)
KVM-Specific Form Fields
When creating KVM VMs, additional configuration options are available:
- VM Name: The libvirt domain name (must be unique on the host)
- Memory: RAM allocation (e.g., "2G", "4096M") - default is 2GB
- vCPUs: Number of virtual CPUs - default is 2
- Disk Size: Virtual disk size (e.g., "20G", "50G") - default is 20GB
Networking
KVM VMs connect to the libvirt default network which provides:
- DHCP: VMs receive IP addresses automatically from the virbr0 bridge (typically 192.168.122.x)
- NAT: Outbound connectivity is provided via NAT through the host
- DNS: VMs use the host's DNS servers for name resolution
For advanced networking, SysManage also supports bridged mode where VMs get IP addresses directly from your network's DHCP server.
VM Lifecycle Management
Once created, KVM VMs support the full range of lifecycle operations:
- Start: Boot the VM using
virsh start - Stop: Gracefully shutdown the VM using
virsh shutdown - Restart: Reboot the VM using
virsh reboot - Delete: Remove the VM and its storage using
virsh undefine --remove-all-storage
Supported Distributions
KVM VMs can be created using cloud images from distributions where the sysmanage-agent is available:
Debian/Ubuntu (APT)
- Ubuntu 24.04 LTS (Noble)
- Ubuntu 22.04 LTS (Jammy)
- Debian 12 (Bookworm)
Fedora/RHEL Family (DNF)
- Fedora
- Rocky Linux 9
- AlmaLinux 9
- Oracle Linux 9
openSUSE (Zypper)
- openSUSE Tumbleweed
- openSUSE Leap 15
KVM vs LXD Comparison
| Feature | KVM | LXD |
|---|---|---|
| Virtualization Type | Full virtualization (hardware-level) | OS-level containerization |
| Isolation | Complete (separate kernel) | Shared kernel with host |
| Guest OS | Any (Linux, Windows, BSD) | Linux only |
| Performance | Near-native with VirtIO | Native (no overhead) |
| Resource Usage | Higher (dedicated memory) | Lower (shared resources) |
| Boot Time | 30-60 seconds | 1-2 seconds |
| Best For | Full OS isolation, different kernels | Lightweight Linux environments |
Troubleshooting
Common Issues
Child Host Creation Fails
- Verify the parent host has network connectivity
- Check that the distribution is enabled in Settings
- Ensure sufficient disk space on the parent host
- Review the error message in the child host status
WSL Enable Requires Reboot
This is normal behavior. Use SysManage's reboot function to restart the Windows host, then retry creating child hosts.
Agent Not Connecting After Creation
- Verify the child host is running (not stopped)
- Check that the sysmanage-agent service is running inside the child
- Verify network connectivity from the child to the SysManage server
- Review the agent logs for connection errors
Child Host Shows "Error" Status
Click on the child host to view the error details. Common causes include:
- Distribution download failed
- Agent installation failed
- User creation encountered an error
LXD Container Creation Fails
- Verify LXD is initialized: run
lxc storage listto check storage pools exist - Check the sysmanage-agent user is in the lxd group:
groups sysmanage-agent - If group was just added, restart the sysmanage-agent service
- Verify network bridge exists:
lxc network list
LXD Container Has No Network
- Check the container is attached to the bridge:
lxc config show <container> - Verify the bridge is running:
lxc network info lxdbr0 - Check DHCP is enabled on the bridge
- Inside the container, check if eth0 has an IP:
lxc exec <container> -- ip addr
LXD Host Role Not Showing
- Verify LXD is installed and the
lxccommand is in PATH - Ensure LXD is initialized with at least one storage pool
- Wait for the agent to send an updated data collection or restart the agent
- Check that the agent has permission to run lxc commands (lxd group membership)
LXD Container Agent Shows Not Privileged
- Verify the sudoers file exists in /etc/sudoers.d/sysmanage-agent inside the container
- Check the sudoers file has correct permissions (440 or 400)
- Test sudo access:
lxc exec <container> -- sudo -u sysmanage-agent sudo -n whoami - Restart the agent to refresh privilege detection
KVM VM Creation Fails
- Verify KVM is enabled:
virsh list --allshould work without errors - Check libvirt is running:
sudo systemctl status libvirtd - Ensure sysmanage-agent user is in the libvirt group:
groups sysmanage-agent - Verify sufficient disk space in /var/lib/libvirt/images
- Check the cloud image URL is accessible from the host
KVM VM Has No Network
- Verify the default network is active:
virsh net-list - Start the network if needed:
virsh net-start default - Check VM network interface:
virsh domiflist <vm_name> - Verify virbr0 bridge exists:
ip addr show virbr0
KVM Host Role Not Showing
- Verify /dev/kvm exists and is accessible
- Check libvirtd is running and the virsh command works
- Ensure sysmanage-agent user has libvirt group membership
- Restart sysmanage-agent after adding to libvirt group
KVM VM Cloud-Init Not Completing
- Access VM console:
virsh console <vm_name> - Check cloud-init logs:
/var/log/cloud-init.logand/var/log/cloud-init-output.log - Verify DNS resolution works inside the VM
- Check if package installation failed due to repository access issues
Best Practices
Naming Conventions
- Use descriptive hostnames that include the parent host name and purpose
- Follow a consistent naming pattern: parent-type-distro (e.g., server01-wsl-ubuntu24)
- Avoid special characters in hostnames
Security
- Use strong passwords for child host user accounts
- Promptly approve or reject pending child hosts
- Regularly review and remove unused child hosts
- Apply the principle of least privilege for permissions
Maintenance
- Keep distributions updated with latest agent installation commands
- Monitor child host disk usage to prevent parent host issues
- Stop child hosts that are not actively in use
- Back up important data before deleting child hosts