Convert rover features as golang executable
- Dominant language
- Shell
- Stars
- 176
- Forks
- 147
- PR merge metrics
- No merged PRs in 30d
Description
## Description
Convert the rover from a Docker container-based solution to a Golang executable. This will improve performance, reduce resource overhead, and provide a more lightweight deployment option for the Terraform platform engineering toolset.
## Current State
The rover is currently implemented as a Docker container with:
- 88% Shell scripts
- 8.3% Dockerfile
- 2% Python
- 1.5% HCL
- 0.2% Makefile
## Benefits of Migration to Go
- **Performance**: Faster execution and lower memory footprint
- **Portability**: Single binary distribution across platforms
- **Reduced dependencies**: No Docker runtime requirement
- **Simplified deployment**: Direct executable without container orchestration
- **Better resource utilization**: Lower overhead compared to containerized solution
- **Cross-platform support**: Native binaries for different OS/architectures
## Migration Tasks
- [ ] Analyze current shell script functionality and map to Go modules
- [ ] Design Go application architecture and CLI interface
- [ ] Implement core Terraform deployment logic in Go
- [ ] Port configuration management features
- [ ] Implement Azure-specific platform engineering features
- [ ] Add comprehensive testing suite
- [ ] Create build pipeline for multi-platform binaries
- [ ] Update documentation and usage examples
- [ ] Provide migration guide for existing users
- [ ] Maintain backward compatibility during transition
## Technical Considerations
- **CLI Framework**: Consider using cobra/viper for command-line interface
- **Configuration**: Migrate existing configuration formats
- **Azure SDK**: Leverage Azure SDK for Go
- **Terraform Integration**: Use Terraform Go SDK or exec approach
- **Logging**: Implement structured logging
- **Error Handling**: Robust error handling and user feedback
## Acceptance Criteria
- [ ] Go executable provides equivalent functionality to current Docker solution
- [ ] Performance benchmarks show improvement over container version
- [ ] Cross-platform binaries available (Linux, macOS, Windows)
- [ ] Comprehensive test coverage
- [ ] Updated documentation
- [ ] Migration path documented for existing users
## Additional Context
This migration represents a significant architectural change that will modernize the rover toolset and align with current Go ecosystem practices for infrastructure tooling.
---
**Review Note (2026-01-12)**: Current branch shows migration to Rust (001-shell-to-rust-migration) rather than Go. This issue should be updated to reflect the actual migration strategy or closed if Rust is the chosen path.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the current branch named 001-shell-to-rust-migration and comparing it with the existing Docker and shell-based rover. Resolve whether Go or Rust is the intended target before defining the architecture, implementation scope, tests, binaries, documentation, and migration path; the issue is not done until that strategy and equivalent functionality are established.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, docker, go, rust, shell, terraform
- Domain
- build-system, cli, cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 15/100