Abra cheat sheet¶
Info
not all flags are listed here.
Abra Autocomplete¶
Definitely set up autocomplete or you'll be sad abra
supports bash
,
zsh
, and fizsh
just run
$ abra autocomplete bash
# Restart your terminal or load autocompletion in place
$ source /etc/bash_completion.d/abra
Create & deploy an app¶
$ abra app new $RECIPE`
Optional flags: -s/--server
, -D/--domain
, -S/--secrets
, -p/--pass
$ abra app config $APPNAME
$ abra app secret generate $APPNAME -a
Optional flags: -p/--pass
, -a/--all
$ abra app deploy $APPNAME
Optional flags: -f/--force
, -C/--chaos
Restarting an app¶
To run restart
you need to specify the <service>
name with the default being app
$ abra app restart <domain> app
Undeploy & remove an app¶
Back up any data you don't want to lose
$ abra app undeploy $APPNAME
$ abra app rm --volumes $APPNAME
Optional flags: -f/--force
, -V/--volumes
Upgrade abra¶
To upgrade abra
itself, run the following:
$ abra upgrade
Option flags: --rc
Upgrade a recipe¶
$ abra recipe upgrade $RECIPE`
Option flags: -x,y,z/--major,minor,patch
$ abra recipe sync $RECIPE
Optional flags: -x,y,z
$ abra recipe release $RECIPE [$VERSION]
Optional flags: -p/--publish
, -r/--dry-run
, -x,y,z
Manually restoring app data¶
To manually restore app data or configurations, you can use the cp
command as:
$ abra app cp <domain> path/to/.app.conf app:/home/app/
$ abra app cp <domain> path/to/data app:/home/app/
Note: the destination must be a directory and not a filename
Make changes to a recipe¶
Edit the files in ~/.abra/recipe/$RECIPENAME
Deploy the changed version to your test instance
Determine how serious your change is (semver.org for reference)
$ abra recipe release $RECIPE [$VERSION]
Advanced Listing using jq
¶
Several abra
commands can output JSON formatted tables, and can thus be queried and filtered with the tool jq. We can also format these outputs with tv into a pretty table.
Currently, abra recipe ls
, abra server ls
, and abra app ls
support the -m
machine readable output flag which outputs JSON.
Filter recipes by "category"¶
$ abra recipe ls -m | jq '[.[] | select(.category == "Utilities") ]' | tv
As you can see we, we're selecting all recipes where category is "Utilities".
Filter apps by state deployed
¶
Info
abra app ls -S
queries each server in your added server list, where as without the -S
it only lists from your local copy of the sever files (thus providing no information about actual state of the apps)
Info
abra app ls
lists apps grouped into a server object, with statistics about the server. In jq
we can select the entire apps list with .[].apps[]
.
$ abra app ls -m -S |jq '[.[].apps[] | select(.status == "deployed") | del(.upgrade)]' |tv
The del(.upgrade)
filter filters out available versions for the recipe in question for that row. It could be useful to leave in if you want a list of deployed apps that need an upgrade.