Skip to content
This repository has been archived by the owner on Aug 18, 2022. It is now read-only.
/ rovergo Public archive

The next version of Rover, the command line tool for Azure CAF Landingzones. Developed in Go

License

Notifications You must be signed in to change notification settings

aztfmod/rovergo

Repository files navigation

🐶 Rover v2

The Rover v2 project undertakes re-writing the Rover command line tool in Go and redesigning the running and operation of the tool.

The high level goals & objectives of this project:

  • Move away from a bash script based tool to one with solid engineering.
  • Provide a maintainable codebase going forward, supported by CI/CD and tests etc.
  • Improve the user experience, and simplify the getting started with CAF landingzones.
  • Remove dependency on hardcoded paths and other limitations that Rover v1 had.
  • Provide standalone binaries (Linux, Windows, MacOS) as well as devcontainer support

Note. This version is not backwards compatible with the previous Rover v1 tool

🥇 Intro To Rover

Rover is a command line tool to assist with the deployment and management of Azure CAF Landing zones. It provides a way to run Terraform and other tools in a structured way and simplify many of the operations. It was designed to be run by end users locally, but also inside of a CI/CD pipeline

Rover v2 provides a way to manage entire environments consisting of any number of CAF Landing zones across multiple CAF levels, this is done with YAML definitions describing your configuration (aka project Symphony) this is how it used

🚦 Project Status

last commit commit activity release checks status ci build status workflow status license

Estimated stability level: ⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜ 85%


✨ Getting Started

📦 Installation

The easiest way to install Rover v2 is directly from GitHub using the install script.

To install into the current directory ./bin/ directory just run:

curl https://raw.githubusercontent.com/aztfmod/rovergo/main/install.sh | bash

Alternatively specify the install location, e.g. a directory on your system path:

export installPath=$HOME/.local/bin
curl https://raw.githubusercontent.com/aztfmod/rovergo/main/install.sh | bash -s -- -b $installPath

If you wish to fetch the binary yourself or install older versions, please refer to the GitHub releases page

🏃‍♂️ Running

This is a very basic introduction into running Rover v2

Firstly Rover v2 relies on some external tools and dependencies:

  • Azure CLI for authentication and sign-in to Azure - Install here
  • Terraform v0.15+ for deployment of landing zones - Install here

If you want to get up and running and try Rover out, please check out the minimal sample config which has a very simple sample CAF configuration to use, consisting of a level 0 launchpad and a level 1 with some simple resource groups for testing.

A more complex sample is found in the reference sample app

Otherwise:

  • You will also require a set of CAF Landingzones on your system
  • In addtion you will need a set of of landing zone configurations, this is a complex topic beyond the scope of this readme, see the full user guide for some details.

Run rover with rover --help to get information about the commands available, e.g.

Usage:
  rover [command]

Available Commands:
  apply       Perform a terraform plan & apply
  destroy     Perform a terraform destroy
  finder      List all terraform (example custom action)
  fmt         Perform a terraform format
  help        Help about any command
  init        Perform a terraform init and no other action
  landingzone Manage and deploy landing zones
  lint        Run tflint
  plan        Perform a terraform plan
  validate    Perform a terraform validate

🔌 Extending Rover

Rover v2 is extensible with;

  • custom actions which extend it beyond running Terraform
  • groups of actions which can be run in sequence

see the user guide for details for more details

👩‍💻 Developing and Contributing