Deployment automation for Torrust Tracker environments using OpenTofu, Ansible, and Rust.
Version 0.1.0 is the first fully functional release line of the deployer.
Current status:
- End-to-end workflow is implemented: create, provision, configure, test, release, run, destroy
- Multi-provider architecture is implemented
- Providers currently supported: LXD (local development) and Hetzner Cloud (cloud deployments)
- CI includes linting, unit/integration tests, and split E2E workflows
The deployer provisions and configures VM infrastructure, then deploys and runs the Torrust Tracker stack.
Workflow:
- OpenTofu provisions infrastructure and cloud-init setup.
- Ansible configures the provisioned host.
- The deployer releases tracker artifacts and starts services.
- Built-in commands support verification and teardown.
Recommended (automatic dependency installer):
cargo run --bin dependency-installer install
cargo run --bin dependency-installer checkcargo run# Generate environment config template
cargo run -- create template my-env.json
# Edit config values, then create the environment from the file
cargo run -- create environment --env-file my-env.json
# Provision and configure
cargo run -- provision my-environment
cargo run -- configure my-environment
# Verify and deploy application
cargo run -- test my-environment
cargo run -- release my-environment
cargo run -- run my-environment
# Tear down when done
cargo run -- destroy my-environmentImportant:
- Keep your environment JSON files in
envs/. - The
data/directory is application-managed deployment state and should not be edited manually.
For cloud-provider deployments, you can run the deployer via container image:
docker pull torrust/tracker-deployer:latest
docker run --rm \
-v $(pwd)/data:/var/lib/torrust/deployer/data \
-v $(pwd)/build:/var/lib/torrust/deployer/build \
-v $(pwd)/envs:/var/lib/torrust/deployer/envs \
-v ~/.ssh:/home/deployer/.ssh:ro \
torrust/tracker-deployer:latest \
--helpNote: Docker workflow supports cloud providers. For local LXD usage, run the deployer natively on the host.
# Comprehensive linting
cargo run --bin linter all
# Run test suite
cargo test
# E2E suites
cargo run --bin e2e-infrastructure-lifecycle-tests
cargo run --bin e2e-deployment-workflow-tests
# Full E2E workflow (local only)
cargo run --bin e2e-complete-workflow-testsFor detailed guides, use the docs index and user guide:
- Documentation Index
- User Guide
- Quick Start Guides
- Commands
- Providers
- E2E Testing
- Contributing
- Architecture Overview
- Roadmap
The deployer focuses on provisioning, configuring, and deploying Torrust Tracker. For example application operations and maintenance after deployment, see:
Top-level directories:
src/: Rust codebase using DDD layers (domain, application, infrastructure, presentation)templates/: OpenTofu and Ansible templatesdocs/: user and contributor documentationenvs/: user environment configuration files (git-ignored)build/: generated runtime files (git-ignored)data/: application-managed deployment state
The 0.1.0 line establishes the functional baseline. Upcoming improvements are tracked in the roadmap, including broader provider support and deployment UX refinements.
See: Roadmap
This project is licensed under the MIT License.