Agentless configuration manager in Bash
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin Lints the executable scripts May 20, 2015
completions Enables zsh autocompletion Sep 26, 2015
docs Regenerates the documentation Sep 30, 2015
kickstart Fixes command_exists to work on debug Mar 17, 2018
lib Use find arguments to select commands instead of grep Mar 17, 2018
Dockerfile Add docker container that comes with kickstart installed Feb 23, 2014
Makefile Sorts the functions on documentation index Sep 30, 2015 Reorder the install instructions to let the manual path as secondary Feb 23, 2016


Bash only provisioning tool.

The idea is to use bash scripts to provision machines over ssh, with no client installation on the target. It provides some abstractions and functions that help you structure and write more readable bash scripts.

For an example project, check project or kickstart-baseline.


  • No installation on the target
  • Over ssh, or local
  • Portable (Mac, Linux, containers and so on)


Kickstart provides offline documentation using the kickstart doc command as well as an online on

Autocompletion is enabled for the offline documentation.



brew tap bltavares/tap
brew install --HEAD kickstart


basher install bltavares/kickstart

Arch Linux

kickstart-git is available on aur.

You can use the following command to install.

yaourt -S kickstart-git

Adding to the shell

Add it to the path.

One options is to download it, and export the bin folder into your PATH

# Adjust the paths to your preferred location

git clone $installation_path
echo 'export PATH=$PATH:'$installation_path'/bin' >> $shell_configuration

Link under /usr/local/bin

The other is to link the bin/kickstart into a place that is already on your path.

This will allow sudo to see the kickstart command.

# Adjust the paths to your preferred location

git clone $installation_path
sudo ln -s $installation_path/bin/kickstart /usr/local/bin/kickstart


To enable autocompletion run the following command:

echo 'eval "$(kickstart autocomplete)"' >> $shell_configuration

Adjust the shell configuration variable if you use a different shell.



Creates a sample project structure

kickstart create [folder name or current folder]


Creates a docker container with a running sshd to test recipes

kickstart docker-create [image-name]


Access the created docker container over ssh. A simple utility that looks up for the port the docker is bound.

kickstart docker-ssh [image-name]


Compile the current workspace into the folder to be packaged on deploy

kickstart compile


Takes an host target and deploy the compiled code on it.

kickstart deploy [--sudo] [--password PASSWORD] target [roles ...]

Deploy a role on a host

kickstart deploy vagrant@localhost nodejs

Deploy two roles on a host with an alternative port

kickstart deploy "-p 2222 vagrant@localhost" nodejs redis

Deploy with sudo and send the password for sudo

kickstart deploy --sudo --password vagrant "-p 2222 vagrant@localhost" nodejs redis


Deploy localy a recipe that is not over ssh. It basicaly compile and run the install script

kickstart local [--sudo] [roles ...]


Infect your shell with the kickstart utility functions

eval "$(kickstart infect)"


Install kickstart on the target

kickstart bootstratp [target]

Using default ssh configurations

kickstart bootstrap vagrant@vagrant

Using alternate ssh port

kickstart bootstrap "-p 2222 vagrant@vagrant"


Show documentation for a kickstart function

kickstart doc [function name]

List all documented functions

kickstart doc

Show documentation for a function

kickstart doc kickstart.os


Enable autocompletion on your terminal

eval "$(kickstart autocomplete)"


Prepend DEBUG=1 to the command and you will see massive ammount of commands on your screen

DEBUG=1 kickstart local nodejs

Choosing the docker image to use

You can choose an specific image to use on the docker-* commands.

On order, it looks up for an image as an argument, on the KICKSTART_DOCKER_IMAGE env variable or defaults to moul/sshd. You can use any image that is on the index, you probably want it to have an sshd running by default.

Docker images tested:



You need to have make and fpm installed.

make deb


This project was inspired on sunzi