Skip to content

Convert rover features as golang executable #411

@arnaudlh

Description

@arnaudlh

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions