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 my homelab, the tty.space 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 http://bltavares.viewdocs.io/kickstart.
Autocompletion is enabled for the offline documentation.
brew tap bltavares/tap
brew install --HEAD kickstart
basher install bltavares/kickstart
kickstart-git
is available on aur.
You can use the following command to install.
yaourt -S kickstart-git
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
installation_path=/opt/kickstart
shell_configuration=$HOME/.bashrc
git clone https://github.com/bltavares/kickstart.git $installation_path
echo 'export PATH=$PATH:'$installation_path'/bin' >> $shell_configuration
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
installation_path=/opt/kickstart
git clone https://github.com/bltavares/kickstart.git $installation_path
sudo ln -s $installation_path/bin/kickstart /usr/local/bin/kickstart
To enable autocompletion run the following command:
shell_configuration=$HOME/.bashrc
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
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