Multi-system content synchronization with metadata-driven configuration.
Drift Management provides automated content synchronization between systems using metadata files (.sync-config.yml) to declare sync requirements.
- ✅ Metadata-based sync - Each directory declares its own sync needs
- ✅ Multiple sync methods - rsync, git push, manual
- ✅ Automated scheduling - systemd timers (every 15 minutes)
- ✅ Drift detection - Compare local vs remote content
- ✅ Self-contained - Bootstrap-friendly, portable
- ✅ Ansible-powered - Idempotent, auditable, version-controlled
# Clone this repository
cd ~
git clone https://github.com/thebyrdman-git/drift-management.git
cd drift-management
# Run install script
./install.sh
# Setup automated syncing
content-sync setup
# Check status
content-sync status# ~/ai-infrastructure/.sync-config.yml
category: ai-tools
description: "AI infrastructure and tooling"
sync_enabled: true
sync_destinations:
- type: rsync
target: miraclemax.local:/opt/ai-infrastructure
interval: 15min
enabled: true
exclude_patterns:
- "*.pyc"
- ".git"# Run all syncs manually
content-sync run
# Or automated via systemd timer (every 15 min)
systemctl --user status content-sync.timer# Check for drift
drift-status
# Verify last sync
sync-verifyMain CLI tool for content synchronization.
content-sync run # Sync all content
content-sync run --category ai-tools # Sync specific category
content-sync run --dry-run # Show what would sync
content-sync status # Show sync status
content-sync setup # Setup automated syncingCheck for drift between local and remote content.
drift-status # Check all content for driftVerify last sync completed successfully.
sync-verify # Show last sync reportdrift-management/
├── ansible/
│ ├── roles/
│ │ ├── content_sync/ # Core sync role
│ │ ├── drift_detect/ # Drift detection
│ │ └── sync_scheduler/ # Systemd timer setup
│ └── playbooks/
│ ├── sync-all-content.yml
│ ├── drift-report.yml
│ ├── setup-drift-management.yml
│ └── separate-ai-infrastructure.yml
├── bin/
│ ├── content-sync # Main CLI
│ ├── drift-status # Drift checker
│ └── sync-verify # Sync verifier
├── docs/
│ ├── GETTING-STARTED.md
│ └── SYNC-CONFIG-REFERENCE.md
├── examples/
│ └── .sync-config.yml.example
├── install.sh # One-command setup
└── README.md
See docs/SYNC-CONFIG-REFERENCE.md for complete .sync-config.yml documentation.
Sync code between laptop and server automatically.
Keep configurations synchronized across systems.
Regularly sync important directories to remote systems.
Separate example: ansible/playbooks/separate-ai-infrastructure.yml
- Ansible 2.9+
- Python 3.6+
- SSH access to remote systems
- systemd (for automated scheduling)
See docs/GETTING-STARTED.md for detailed installation instructions.
MIT License - see LICENSE file
Jimmy Byrd (jbyrd@redhat.com)
Red Hat Technical Account Manager
Contributions welcome! This is designed to be a generic, reusable drift management system.
Clean separation of concerns: content declares needs, drift-management handles execution.