A task automation framework driven through an HTTP API
Chieftan was designed to simplify the process of creating, managing and triggering tasks on your infrastructure. It is driven through an HTTP API, making it trivially easy to automate and consume - while the simple API ensures you won't be left reading docs.
Its primary goal is to provide a data-defined task framework, enabling rich interactions with other systems such as build and deployment tools.
chieftan executable provides a command line interface which allows you to interact
with the database to perform various administrative functions such as creating users,
generating access tokens etc.
This functionality is all available through the API as well, however the command line offers a convenient way to bootstrap your server.
CAUTION Changes made through the command line interface will not be logged to the standard Audit Log provided by Chieftan as there is no way to determine their source. As the command line is required to be run on the same server as your database, we assume this will not be an issue, however you should put things in place to prevent unauthorized access to your data nodes nonetheless.
Creating a User
chieftan user create --admin "Benjamin Pannell" email@example.com
Get a User's Details
chieftan user info firstname.lastname@example.org
Removing a User
chieftan user remove email@example.com
Changing a User's Permissions
chieftan permissions set firstname.lastname@example.org project/:project project/:project/admin admin admin/users
Granting a User Permissions
chieftan permissions add email@example.com admin admin/users
Removing a User's Permissions
chieftan permissions remove firstname.lastname@example.org project/:project
Creating an Access Token
chieftan token create email@example.com
Getting a User's Access Tokens
chieftan token list firstname.lastname@example.org
Revoking an Access Token
chieftan token remove 54e81577954376dac6ed9d8b134a790b
Revoking a User's Access Tokens
chieftan token remove --user email@example.com
Revoking All Access Tokens
chieftan token remove --global
Development is conducted using standard Go and
gvt for dependency management. Tests
are written using
gocheck to help keep things a bit more succinct.
You are expected to have a MongoDB database available at
mongodb://localhost/chieftan for all tests and executions.
You just need to restore the correct versions of the various dependencies using
go get -u github.com/FiloSottile/gvt gvt restore
You can run the automated test suite by executing the following:
Alternatively, you may make use of the standard
gotest binary if you wish to run the
tests on a headless server.
go test ./ ./api ./executors ./models ./tasks ./tools ./utils
Creating a build requires you to run
go build. You can provide additional linker
flags to embed version information in the binary, specifically the git commit and
semantic version of the release.
go build -o chieftan -ldflags "-X main.version=$(git describe --abbrev=0 --tags)-$(git log --pretty=format:'%h' -n 1) -X main.sentry_dsn=$SENTRY_DSN"