Files
speedrun/README.md
Dawid Pogorzelski 4a0574554a Tweaks (#53)
* Fix loglevel parsing

* Bump dependencies

* Change --filter to --target

* Update documentation

* Import log handler as "loghandler"

* Change command color to purple

* Change flag name to target

* Update formatting
2021-07-30 22:51:20 +02:00

3.2 KiB

Speedrun

license Go Report Card Go

Speedrun is a command execution framework that works at scale. The point of Speedrun is so that you can run any command across any number of servers, projects and cloud vendors with ease and fast (currently GCP only but AWS and Azure will be supported as well), example:

speedrun run systemctl stop nginx

to stop nginx across 3k machines.

No hassles with setting up and maintaining a server with agents as speedrun has none. No runtime to install/maintain as it's a single self-contained binary. Speedrun leverages SSH as transport with tight cloud vendor integration to take the burden of mundane things like key generation and propagation/revocation away from the user.

Server targeting (--target) is made as intuitive as possible, currently based on gcloud topic filters but in the future will be replaced by a generic selection mechanism to provide a seamless experience across different cloud vendors.

Features:

  • native cloud integration (currently Google Cloud only, AWS and Azure coming up!)
  • stateless and agentless
  • no complex configuration required
  • single self-contained binary
  • can run against any number of servers and projects seamlessly
  • a plugin system is in the plan to allow anyone to integrate execution modules that will wrap complex functionality instead of running raw shell commands

Installation

Download the precompiled binary from here: Releases

Usage

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/serviceaccount.json
speedrun init
speedrun key new
speedrun key authorize
speedrun run whoami

Examples

Use 1000 concurrent SSH workers

speedrun run "uname -r" --concurrency 1000

Stop Nginx on VMs matching the target selector

speedrun run sudo systemctl stop nginx --target "labels.env=staging AND labels.app=foobar"

Ignore SSH fingerprint mismatch and connect via private IP addresses

speedrun run "ls -la" --target "labels.env != prod" --ignore-fingerprint --concurrency 1000 --use-private-ip

Use a different config file

speedrun run whoami -c /path/to/config.toml

Configuration

Using certain flags repeteadly can be annoying, it's possible to persist their behavior via config file. Default config file is located at ~/.speedrun/config.toml and can be re-initialized to it's default form via speedrun init.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Project Status

This project is in a very early stage so expect a lot of breaking changes in the nearest future

License

MPL-2.0