Frey is an end-to-end sysadmin toolbelt for developers

With one Freyfile..

  • Launch virtual instances on any cloud vendor
  • Provision them with software packages and configuration
  • Deploy your app onto the cluster

Manage single instances, or clusters across regions and cloud providers

Deploy your app

Version Control - roll back your app to a previous version

Easily override - Any configuration stored in the Freyfile can be overridden at runtime via command-line arguments

Features

Plan & Launch Infrastructure - Based on Terraform, Frey let's you plan infra, and asks for confirmation if it detects destructive changes.
kvz at mbp in ~/code/uppy-server/infra on frey*
$ frey --help
Usage: frey <command> [options]

Commands:
completion    install CLI auto completion
config        V loads, merges, renders, writes configuration
prepare       V installs dependencies like Terraform
refresh       V refreshes current infra stats and saves to terraform.tfstate
destroy       Destroy all that is in state
remote        Execute a remote command-or opens console
Provision software packages, such as Nginx and Redis. Frey comes bundled with roles so you only have to specify versions and vhosts.
kvz at mbp in ~/code/uppy-server/infra on frey*
$ frey --help
Usage: frey <command> [options]

Commands:
completion    install CLI auto completion
config        V loads, merges, renders, writes configuration
prepare       V installs dependencies like Terraform
refresh       V refreshes current infra stats and saves to terraform.tfstate
destroy       Destroy all that is in state
remote        Execute a remote command-or opens console
Connect to your app with ease - Frey handles SSH keys for you.
kvz at mbp in ~/code/uppy-server/infra on frey*
$ frey --help
Usage: frey <command> [options]

Commands:
completion    install CLI auto completion
config        V loads, merges, renders, writes configuration
prepare       V installs dependencies like Terraform
refresh       V refreshes current infra stats and saves to terraform.tfstate
destroy       Destroy all that is in state
remote        Execute a remote command-or opens console
Encrypt using a secret only you know - Frey can store ssh keys in Git. CI like travis can decrypt these, so you can have it deploy your app whenever there are changes
kvz at mbp in ~/code/uppy-server/infra on frey*
$ frey --help
Usage: frey <command> [options]

Commands:
completion    install CLI auto completion
config        V loads, merges, renders, writes configuration
prepare       V installs dependencies like Terraform
refresh       V refreshes current infra stats and saves to terraform.tfstate
destroy       Destroy all that is in state
remote        Execute a remote command-or opens console

It does so, keeping a few design goals in mind:

  • Convenience - Frey installs all of its requirements, so you don't have to
  • Single configuration file describing the platform for your app, software requirements, and deploy strategy
  • Pinned down dependencies - If it works now, it should work in 5 years

Used In

Launch one Digital Ocean droplet, called 'my-app'

Make redis a requirement for your app

Make Node.js a requirement for your app

Use rsync as deployment strategy