All Projects → bltavares → kickstart

bltavares / kickstart

Licence: other
Agentless configuration manager in Bash

Programming Languages

shell
77523 projects
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to kickstart

Cdist
usable configuration management
Stars: ✭ 210 (+195.77%)
Mutual labels:  configuration-management
bmcbutler
BMC configuration management tool
Stars: ✭ 70 (-1.41%)
Mutual labels:  configuration-management
netcfgbu
Network Configuration Backup
Stars: ✭ 93 (+30.99%)
Mutual labels:  configuration-management
Mgmt
Next generation distributed, event-driven, parallel config management!
Stars: ✭ 2,708 (+3714.08%)
Mutual labels:  configuration-management
WDR
Jython framework aiming for simplified WebSphere Application Server scripting
Stars: ✭ 43 (-39.44%)
Mutual labels:  configuration-management
SeLite
Automated database-enabled navigation ✔️ of web applications
Stars: ✭ 34 (-52.11%)
Mutual labels:  configuration-management
Xconf
分布式配置中心
Stars: ✭ 185 (+160.56%)
Mutual labels:  configuration-management
delta reporting
Promise reporting portal using CFEngine Community
Stars: ✭ 13 (-81.69%)
Mutual labels:  configuration-management
ini
📝 Go INI config management. support multi file load, data override merge. parse ENV variable, parse variable reference. Dotenv file parse and loader. INI配置读取管理,支持多文件加载,数据覆盖合并, 解析ENV变量, 解析变量引用。DotEnv 解析加载
Stars: ✭ 72 (+1.41%)
Mutual labels:  configuration-management
DeployMachineLearningModels
This Repo Contains Deployment of Machine Learning Models on various cloud services like Azure, Heroku, AWS,GCP etc
Stars: ✭ 14 (-80.28%)
Mutual labels:  configuration-management
Kconfiglib
A flexible Python 2/3 Kconfig implementation and library
Stars: ✭ 231 (+225.35%)
Mutual labels:  configuration-management
go-uci
Native Go bindings for OpenWrt's UCI.
Stars: ✭ 69 (-2.82%)
Mutual labels:  configuration-management
juno-agent
juno-agent
Stars: ✭ 46 (-35.21%)
Mutual labels:  configuration-management
Deck
decK: Configuration management and drift detection for Kong
Stars: ✭ 211 (+197.18%)
Mutual labels:  configuration-management
vyper
Python configuration with (more) fangs
Stars: ✭ 121 (+70.42%)
Mutual labels:  configuration-management
Habitat
Modern applications with built-in automation
Stars: ✭ 2,334 (+3187.32%)
Mutual labels:  configuration-management
runcom
An XDG enhanced run command manager for command line interfaces.
Stars: ✭ 16 (-77.46%)
Mutual labels:  configuration-management
puppet-st2
Puppet Module to install and configure StackStorm, IFTTT for Ops
Stars: ✭ 20 (-71.83%)
Mutual labels:  configuration-management
jcliff
Manage JBossAS 7/EAP6/Wildfly with modular configuration files from command line, puppet, ansible, chef, etc.
Stars: ✭ 42 (-40.85%)
Mutual labels:  configuration-management
DazzleConf
Incredible configuration library
Stars: ✭ 34 (-52.11%)
Mutual labels:  configuration-management

kickstart

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.

Goal

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

Documentation

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.

Installation

Homebrew

brew tap bltavares/tap
brew install --HEAD kickstart

Basher

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
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

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
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

Autocompletion

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.

Usage

create

Creates a sample project structure

kickstart create [folder name or current folder]

docker-create

Creates a docker container with a running sshd to test recipes

kickstart docker-create [image-name]

docker-ssh

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

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

kickstart compile

deploy

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

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

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

local

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

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

infect

Infect your shell with the kickstart utility functions

eval "$(kickstart infect)"

bootstrap

Install kickstart on the target

kickstart bootstratp [target]
Example

Using default ssh configurations

kickstart bootstrap vagrant@vagrant

Using alternate ssh port

kickstart bootstrap "-p 2222 vagrant@vagrant"

doc

Show documentation for a kickstart function

kickstart doc [function name]
Example

List all documented functions

kickstart doc

Show documentation for a function

kickstart doc kickstart.os

autocomplete

Enable autocompletion on your terminal

eval "$(kickstart autocomplete)"

Debugging

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:

Packaging

.deb

You need to have make and fpm installed.

make deb

Thanks

This project was inspired on sunzi

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].