Documentation > Agent > Cross-Platform Support

Cross-Platform Support

Complete guide to deploying and managing SysManage agents across diverse operating systems including Linux distributions, BSD variants, macOS, and Windows.

Overview

SysManage agent is designed for broad cross-platform compatibility, supporting major operating systems and their package management systems. The agent automatically adapts to platform-specific features while maintaining a consistent management interface.

Supported Platforms

🐧 Linux

  • Ubuntu / Debian (apt)
  • RHEL / CentOS / Fedora (yum/dnf)
  • SUSE / openSUSE (zypper)
  • Arch Linux (pacman)
  • Alpine Linux (apk)

🔱 BSD

  • FreeBSD (pkg)
  • OpenBSD (pkg_add)
  • NetBSD (pkgin)
  • DragonFly BSD

🍎 macOS

  • Homebrew (brew)
  • MacPorts (port)
  • Native macOS features

🪟 Windows

  • Chocolatey (choco)
  • Scoop
  • Windows Package Manager (winget)
  • PowerShell modules

Linux Support

Linux distributions form the core of SysManage's cross-platform support, with comprehensive package manager integration and system management capabilities.

Distribution-Specific Features

Ubuntu / Debian

Package Management
  • APT package manager integration
  • Ubuntu Pro support
  • Snap package support
  • Flatpak support
  • Security update detection
System Services
  • systemd service management
  • Upstart compatibility (older versions)
  • Service status monitoring
  • Automatic service discovery
Ubuntu-specific Configuration
# Ubuntu-specific agent configuration
collection:
  types:
    ubuntu_pro: true        # Enable Ubuntu Pro status collection
    snap_packages: true     # Include snap packages in inventory
    flatpak_packages: true  # Include flatpak applications

# Ubuntu Pro settings (if applicable)
ubuntu_pro:
  check_status: true
  collect_esm_info: true

RHEL / CentOS / Fedora

Package Management
  • YUM/DNF package manager
  • RPM package support
  • EPEL repository support
  • Module stream management
  • Security advisory tracking
System Features
  • SELinux status monitoring
  • Firewalld integration
  • systemd service management
  • Subscription management (RHEL)
RHEL-specific Configuration
# RHEL/CentOS/Fedora configuration
collection:
  types:
    selinux_status: true    # Monitor SELinux status
    firewall_rules: true    # Collect firewall configuration
    subscription_info: true # RHEL subscription status

# Package manager preferences
package_management:
  prefer_dnf: true          # Use DNF over YUM when available
  check_modules: true       # Check module streams

Alpine Linux

Lightweight Features
  • APK package manager
  • OpenRC service management
  • musl libc compatibility
  • Container-optimized operation
Alpine Configuration
# Alpine Linux optimized configuration
collection:
  intervals:
    # Reduce collection frequency for containers
    system_info: 600      # 10 minutes
    software: 7200        # 2 hours

# Lightweight logging
logging:
  level: "WARNING|ERROR|CRITICAL"
  format: "%(levelname)s: %(message)s"

BSD Support

BSD systems are fully supported with their unique package management systems and service architectures.

BSD Variants

FreeBSD

Package Management
  • pkg package manager
  • Ports collection support
  • Quarterly and latest repositories
  • Binary and source packages
System Features
  • rc.d service management
  • Jail container support
  • ZFS filesystem integration
  • pfSense firewall support
FreeBSD Configuration
# FreeBSD-specific configuration
collection:
                                    types:
    zfs_pools: true         # Monitor ZFS pools and datasets
    jail_status: true       # Collect jail information
    ports_tree: true        # Monitor ports tree status

# Service management
service_management:
  use_service_command: true # Use service(8) command
  rc_conf_monitoring: true  # Monitor /etc/rc.conf changes

OpenBSD

Package Management
  • pkg_add/pkg_delete tools
  • Package flavors support
  • Signature verification
  • Mirror selection
Security Features
  • rcctl service management
  • pf firewall integration
  • pledge/unveil support
  • syspatch integration
OpenBSD Configuration
# OpenBSD-specific configuration
collection:
  types:
    pf_rules: true          # Collect pf firewall rules
    syspatch_status: true   # Monitor system patches
    rcctl_services: true    # Service status via rcctl

# Security-focused settings
security:
  enable_pledge: true       # Use pledge for security
  enable_unveil: true       # Use unveil for file access

macOS Support

macOS integration provides comprehensive system management through Homebrew and native macOS features.

macOS-Specific Features

Package Management

  • Homebrew: Primary package manager with formula and cask support
  • MacPorts: Alternative package manager support
  • App Store: Mac App Store application tracking
  • DMG/PKG: Native installer package support

System Integration

  • launchd: Service and daemon management
  • System Preferences: Configuration monitoring
  • Security Framework: Keychain and security settings
  • Spotlight: File indexing integration

macOS Configuration Example

# macOS-specific configuration
collection:
  types:
    homebrew_packages: true     # Homebrew formula and casks
    app_store_apps: true        # Mac App Store applications
    launchd_services: true      # System and user services
    system_preferences: true    # System configuration

# macOS package management
package_management:
  homebrew_path: "/opt/homebrew/bin/brew"  # Apple Silicon path
  macports_path: "/opt/local/bin/port"     # MacPorts path
  check_app_store: true                    # Include App Store apps

# Service management
service_management:
  use_launchctl: true          # Use launchctl for services
  monitor_user_agents: true    # Monitor user launch agents

Apple Silicon Considerations

  • Rosetta 2: Intel compatibility layer detection
  • Universal Binaries: Architecture-specific package tracking
  • Homebrew Paths: Different installation paths for Intel and Apple Silicon
  • System Integrity Protection: SIP status monitoring

Windows Support

Windows integration provides package management through Chocolatey, Scoop, and Windows Package Manager.

Windows-Specific Features

Package Managers

  • Chocolatey: Community package repository
  • Scoop: User-focused package manager
  • winget: Microsoft's Windows Package Manager
  • PowerShell Gallery: PowerShell module management

System Management

  • Windows Services: Service control and monitoring
  • Windows Updates: Update status and installation
  • Registry: Registry key monitoring
  • Event Logs: Windows event log integration

Windows Configuration Example

# Windows-specific configuration
collection:
  types:
    chocolatey_packages: true   # Chocolatey packages
    scoop_packages: true        # Scoop applications
    winget_packages: true       # Windows Package Manager
    windows_services: true      # Windows services
    windows_updates: true       # Update status

# Windows package management
package_management:
  chocolatey_path: "C:\\ProgramData\\chocolatey\\bin\\choco.exe"
  scoop_path: "%USERPROFILE%\\scoop\\shims\\scoop.ps1"
  winget_path: "winget"

# Windows-specific settings
windows:
  check_windows_updates: true  # Monitor Windows Updates
  collect_event_logs: true     # Collect relevant event logs
  monitor_services: true       # Monitor Windows services

PowerShell Integration

  • Execution Policy: Respect PowerShell execution policies
  • Module Management: PowerShell module installation and updates
  • DSC Integration: Desired State Configuration support
  • WMI/CIM: Windows Management Instrumentation access

Platform Detection

The agent automatically detects the operating system and adapts its behavior accordingly.

Detection Process

  1. Operating System: Detect base OS (Linux, FreeBSD, Darwin, Windows)
  2. Distribution: Identify specific distribution or variant
  3. Version: Determine OS version and release information
  4. Architecture: Detect CPU architecture (x86_64, ARM64, etc.)
  5. Package Managers: Discover available package management tools
  6. Service System: Identify service management system

Platform Detection Output

# Example platform detection results
{
  "os_family": "linux",
  "os_name": "Ubuntu",
  "os_version": "22.04.3 LTS",
  "os_codename": "jammy",
  "architecture": "x86_64",
  "kernel_version": "5.15.0-91-generic",
  "package_managers": ["apt", "snap", "flatpak"],
  "service_manager": "systemd",
  "init_system": "systemd",
  "container_runtime": "docker",
  "virtualization": "kvm"
}

Cross-Platform Configuration Strategies

Unified Configuration

Use a single configuration file that adapts to different platforms:

# Universal configuration with platform-specific sections
server:
  hostname: "sysmanage.company.com"
  port: 443
  use_https: true

# Cross-platform collection settings
collection:
  enabled: true
  types:
    software_packages: true
    system_updates: true
    hardware_info: true

# Platform-specific overrides (optional)
platform_overrides:
  linux:
    collection:
      types:
        snap_packages: true
        flatpak_packages: true
  freebsd:
    collection:
      types:
        zfs_pools: true
        jail_status: true
  macos:
    collection:
      types:
        homebrew_packages: true
        app_store_apps: true
  windows:
    collection:
      types:
        chocolatey_packages: true
        windows_services: true

Platform-Specific Configurations

Maintain separate configuration files for different platforms:

configs/
├── sysmanage-agent-linux.yaml
├── sysmanage-agent-freebsd.yaml
├── sysmanage-agent-macos.yaml
└── sysmanage-agent-windows.yaml

Environment-Based Configuration

Use environment variables for platform-specific settings:

# Environment variable configuration
export SYSMANAGE_PACKAGE_MANAGER="apt"
export SYSMANAGE_SERVICE_MANAGER="systemd"
export SYSMANAGE_COLLECTION_INTERVAL="300"

# Platform detection script
#!/bin/bash
case "$(uname -s)" in
  Linux*)     export SYSMANAGE_PLATFORM=linux ;;
  FreeBSD*)   export SYSMANAGE_PLATFORM=freebsd ;;
  Darwin*)    export SYSMANAGE_PLATFORM=macos ;;
  CYGWIN*|MINGW*) export SYSMANAGE_PLATFORM=windows ;;
esac

Deployment Considerations

Package Distribution

  • Native Packages: Create platform-specific packages (deb, rpm, pkg, msi)
  • Binary Releases: Provide compiled binaries for each platform
  • Container Images: Multi-arch container images for consistent deployment
  • Configuration Management: Ansible, Puppet, Chef recipes for each platform

Testing Strategy

  • Platform Matrix: Test across all supported platforms and versions
  • Package Manager Testing: Verify all package manager integrations
  • Service Integration: Test service management on each platform
  • Regression Testing: Automated testing for cross-platform compatibility

Cross-Platform Monitoring

  • Unified Dashboards: Platform-agnostic monitoring views
  • Platform Metrics: Platform-specific performance indicators
  • Alert Normalization: Consistent alerting across platforms
  • Compliance Reporting: Platform-specific compliance checks

Cross-Platform Troubleshooting

Common Cross-Platform Issues

Package Manager Not Found

Symptoms: Agent fails to detect package manager

Solutions:

  • Verify package manager is installed and in PATH
  • Check agent user permissions
  • Update platform detection logic
  • Add custom package manager paths to configuration

Service Management Failures

Symptoms: Cannot start/stop services on certain platforms

Solutions:

  • Verify service manager detection (systemd, rc.d, launchd, etc.)
  • Check user permissions for service control
  • Test service commands manually
  • Review platform-specific service configurations

Path and Environment Issues

Symptoms: Commands not found or incorrect behavior

Solutions:

  • Use absolute paths in configurations
  • Set platform-specific PATH variables
  • Check environment variable propagation
  • Verify shell compatibility

Platform-Specific Debugging

Linux/BSD

# Check system information
uname -a
lsb_release -a  # Linux distributions
freebsd-version # FreeBSD

# Verify package managers
which apt yum dnf pkg pkg_add
dpkg --version
rpm --version

# Check service manager
ps -p 1
systemctl --version
service --version

macOS

# System information
sw_vers
system_profiler SPSoftwareDataType

# Package managers
which brew port
brew --version
port version

# Service manager
launchctl version

Windows

# System information
systeminfo
Get-ComputerInfo

# Package managers
choco --version
scoop --version
winget --version

# Service manager
Get-Service
sc query

Cross-Platform Best Practices

Development Best Practices

  • Abstraction Layers: Use platform abstraction for common operations
  • Feature Detection: Detect features rather than platforms when possible
  • Graceful Degradation: Handle missing features gracefully
  • Consistent APIs: Maintain consistent behavior across platforms
  • Documentation: Document platform-specific behaviors and limitations

Deployment Best Practices

  • Testing Matrix: Test on all target platforms before release
  • Staged Rollouts: Deploy to platforms incrementally
  • Platform Validation: Validate platform compatibility during installation
  • Fallback Mechanisms: Provide fallbacks for platform-specific features
  • Update Strategies: Plan platform-specific update procedures

Maintenance Best Practices

  • Platform Monitoring: Monitor agent health across all platforms
  • Issue Tracking: Track platform-specific issues separately
  • Performance Optimization: Optimize for each platform's characteristics
  • Security Updates: Coordinate security updates across platforms
  • Community Feedback: Gather feedback from users on different platforms