An open source templating and deployment tool for HashiCorp Nomad jobs
Clone or download
Latest commit e556b35 Nov 5, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update contribution guide to remove ref to old build script. Jun 25, 2018
buildtime Enable lint check during tests and fix discovered lint issues. Jul 10, 2018
client Addition of template functions allow Consul and Time lookups. May 18, 2018
command Fix a panic when running scale* deployment watcher. Nov 5, 2018
docs Add docs for plan command. Oct 2, 2018
helper Enable lint check during tests and fix discovered lint issues. Jul 10, 2018
levant Fix a panic when running scale* deployment watcher. Nov 5, 2018
logging Update logging to allow JSON output as well as contextual fields. May 1, 2018
scale Also commit scale_test.go fixes based on previous commit. Nov 5, 2018
template Add toUpper and toLower template funcs. Sep 27, 2018
vendor Update to go 1.11 and update dep golang.org/x/crypto and vet code Sep 2, 2018
version Update version to start 0.3.0 development effort. Nov 5, 2018
.gitignore add ignore Aug 13, 2018
.goreleaser.yml Fix formatting issue with version summary output. May 14, 2018
.travis.yml Update to go 1.11 and update dep golang.org/x/crypto and vet code Sep 2, 2018
CHANGELOG.md Update CHANGELOG.md Nov 5, 2018
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md Nov 22, 2017
Dockerfile Fix panic in deployment due to unsafe count checking on taskgroups Oct 25, 2018
Dockerfile.build Add Dockerfile.build to allow building during development. May 14, 2018
GNUmakefile Enable lint check during tests and fix discovered lint issues. Jul 10, 2018
Gopkg.lock Update to go 1.11 and update dep golang.org/x/crypto and vet code Sep 2, 2018
Gopkg.toml Update Vendored package of Nomad to allow use of progress_deadline Jul 16, 2018
LICENSE Initial Commit. Sep 16, 2017
README.md Update README.md to ref 0.2.5 Oct 25, 2018
commands.go Add plan command to allow running a plan whilst using templating. Sep 18, 2018
main.go Enable lint check during tests and fix discovered lint issues. Jul 10, 2018

README.md

Levant

Build Status Go Report Card GoDoc Join the chat at https://gitter.im/levantdeployment/Lobby

Levant is an open source templating and deployment tool for HashiCorp Nomad jobs that provides realtime feedback and detailed failure messages upon deployment issues.

Features

  • Realtime Feedback: Using watchers, Levant provides realtime feedback on Nomad job deployments allowing for greater insight and knowledge about application deployments.

  • Advanced Job Status Checking: Particulary for system and batch jobs, Levant will ensure the job, evaluations and allocations all reach the desired state providing feedback at every stage.

  • Dynamic Job Group Counts: If the Nomad job is currently running on the cluster, Levant will dynamically update the rendered template with the relevant job group counts before deployment.

  • Failure Inspection: Upon a deployment failure, Levant will inspect each allocation and log information about each event, providing useful information for debugging without the need for querying the cluster retrospectively.

  • Canary Auto Promotion: In environments with advanced automation and alerting, automatic promotion of canary deployments may be desirable after a certain time threshold. Levant allows the user to specify a canary-auto-promote time period, which if reached with a healthy set of canaries, will automatically promote the deployment.

  • Multiple Variable File Formats: Currently Levant supports .json, .tf, .yaml, and .yml file extensions for the declaration of template variables.

  • Auto Revert Checking: In the event that a job deployment does not pass its healthy threshold and the job has auto-revert enabled; Levant will track the resulting rollback deployment so you can see the exact outcome of the deployment process.

Download & Install

  • The Levant binary can be downloaded from the GitHub releases page using curl -L https://github.com/jrasell/levant/releases/download/0.2.5/linux-amd64-levant -o levant

  • A docker image can be found on Docker Hub, the latest version can be downloaded using docker pull jrasell/levant.

  • Levant can be built from source by firstly cloning the repository git clone github.com/jrasell/levant.git. Once cloned the binary can be built using the make command or invoking the build.sh script located in the scripts directory.

  • There is a Levant Ansible role available to help installation on machines. Thanks to @stevenscg for this.

Templating

Levant includes functionality to perform template variables substituion as well as trigger built-in template function to add timestamps or retrive information from Consul. For full details please check out the templates documentation page.

Commands

Levant supports a number of command line arguments which provide control over the Levant binary. For detail about each commands and its supported flags, please head over to the commands documentation page.

Clients

Levant utilises the Nomad and Consul offical clients and configuration can be done via a number of environment variables. For detail about these please read through the clients documentation page.

Contributing

Contributions to Levant are very welcome! Please refer to our contribution guide for details about hacking on Levant.