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
- Operating System: Detect base OS (Linux, FreeBSD, Darwin, Windows)
- Distribution: Identify specific distribution or variant
- Version: Determine OS version and release information
- Architecture: Detect CPU architecture (x86_64, ARM64, etc.)
- Package Managers: Discover available package management tools
- 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