Introducing Autoku

I've just made my latest project public: Autoku

Autoku Demo
(Watch closely above, you might notice a little guest!)

Autoku is a command line tool for creating and configuring Heroku applications using configuration files i.e. "Infrastructure as Code". It allows you to specify exactly how your application should be configured, and modifies it to reflect that.

The tool has reached a point where I'm comfortable sharing it, but be forewarned that it's still in need of plenty of work. There are some quirks that need to be worked out and plenty of automated testing to get done. Seeing as this tool is open source, I welcome any and all contributions.

Install

yarn global add autoku or npm install -g autoku

Usage

Given this yaml file sample.yaml:

name: sample-app

region: us

maintenance: false

stack: cedar-14

configVars:
  SOME_VAR: foo 

addons:
  heroku-postgresql: hobby-dev

collaborators:
  - person@example.com

features:
  - log-runtime-metrics
  - http-session-affinity

formation:
  web:
    quantity: 1
    size: hobby
  worker:
    quantity: 1
    size: hobby

logDrains:
  - https://example.com:7000

domains:
  - mydomain.example.com

sni:
  - certificate-chain: "-----BEGIN CERTIFICATE----- ..."
    private-key: "-----BEGIN RSA PRIVATE KEY----- ..."

buildpacks:
  - heroku/python

Execute autoku deploy ./sample.yaml -k $HEROKU_KEY to have Autoku create (if needed) and configure your application.

Subsequent calls will update the application if sample.yaml changes.

Using Autoku you can maintain the following parts of your Heroku app using configuration files:

  • maintenance status
  • Configuration Variables
  • addons
  • collaborators
  • platform features
  • formations
  • log drains
  • domains
  • sni endpoints
  • buildpacks

Again, this is a very new piece of software and so it has flaws. There's plenty of problems to solve, like how to store and retrieve sensitive variables, for example. On that note: don't use an Autoku config file to store secrets in a public repository