I've just made my latest project public: Autoku
(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