Urknall is the basic building block for creating go based tools for the administration of complex infrastructure. It provides the mechanisms to access resources and keep a cache of executed tasks. Description of tasks is done using a mix of explicit shell commands and abstractions for more complex actions being pragmatic, but readable.

simple urknall screencast


  • Automate provisioning: Urknall provides automated provisioning, so that resources can be set up reproducibly and easily. Thereby Urknall helps with scaling infrastructure to the required size.

  • Agentless tool that only relies on common UNIX tools and provides decent caching: As Urknall works agentless on UNIX based systems, adding new resources to the infrastructure is effortless. The caching keeps track of performed tasks and makes repeated provisioning with thoughtful changes possible.

  • Template mechanism that helps at the start, but get’s out of the way later on: Urknall provides some basic templates to execute common tasks, but lets users modify those or add new ones to solve the specific problem at hand. They have no intent to be the generic solution for each use case on each platform.

  • Templates use shell commands with small abstractions: Create solutions using a familiar language, with pragmatic helpers to simplify common tasks and have type safety. No need to learn some fancy new abstractions from the core problem.

  • Go based: This provides the benefits of a compiler, helping to catch bugs early and making refatctoring easy, decent tooling and single binary infrastructure management tools, having no depedencies and enabling all team member to perform tasks like deployment.


To install urknall a proper go setup is required. See go for further information on how to do so. This page has a helpful tour on the language itself that might be a good quick introduction, when you haven't use go yet.

Installation of urknall is as easy as running the following command:

$ go get github.com/dynport/urknall/urknall

This will download the source to $GOPATH/src/github.com/dynport/urknall and install the urknall binary to $GOPATH/bin (which should be in your $PATH environment for best experience) and urknall library to the subtree in $GOPATH/pkg.


The following pages provides a quickstart guide and extensive documentation for different aspects and concepts of urknall. For the technical API documentation on how to use urknall, see the godoc page.


Understand how to use the different parts of urknall to build a basic provisioning tool.

View details »

Urknall Library

The urknall library provides all the nuts and bolts required for building provisioning tools.

View details »

Urknall Binary

Urknall provides a binary that can be used to create an initial application for provisoning, and add and update templatess. Learn how to use this tool effectively.

View details »