aboutsummaryrefslogtreecommitdiff

Bashtard

Bashtard is a small configuration management system written in Bash.

Getting Started

Since Bashtard is written in bash, you will need to have Bash available in your $PATH. You will also need to have a POSIX compatible system, and the associated utilities installed and available in your $PATH. Lastly, to keep your setup synchronized, git is used.

Once you have everything installed, Bashtard itself can be installed using the provided Makefile.

make install

Initialization

When Bashtard is installed, the next step is initializing the system. The init subcommand will perform all necesary steps to create the desired structure in /etc/bashtard.

bashtard init

It is recommended you create a git directory out of /etc/bashtard for synchronization purposes. This will allow you to initialize Bashtard on other systems by giving it the URL of the git repository as additional argument.

bashtard init https://git.tyil.nl/tyilnet.git

With the additional argument, it will clone the repository to /etc/bashtard, and then apply any additional steps for the machine you're initializing.

General Usage

After initializing, you can start using Bashtard. It has the concept of playbooks, which can either be local or cloned from a remote git repository.

One-off updates

To perform updates once by hand, use the sync subcommand.

bashtard sync

This will pull the latest changes of remote playbooks, and then run a sync command for each playbook that is used on the machine.

Regular updates

If you want to do updates on a regular basis, you should configure your preferred cron system to do so.

Playbooks

These are the essential components for doing the actual work. Playbooks are directories with a description.txt and a playbook.bash. The latter contains 3 functions, playbook_add(), playbook_sync(), and playbook_del(), each called for the add, sync, end del subactions respectively. Using these functions, one can automate the setup, synchronization, or disabling of certain components of a system.

Local

A local playbook is simply a directory made in /etc/bashtard/playbooks.d with the two files specified earlier.

Remote

A remote playbook is recorded in /etc/bashtard/playbooks.d/remotes. This is a space-seperated file, containing 3 columns per line, name, url, and branch. When the sync subcommand is called, the latest commits on the specified branch are pulled before calling playbook_sync() on them. The structure of the actual playbook is the same as a local one.

SSH

Bashtard comes with an ssh subcommand to allow the user to run any command on all their servers. This can be useful for performing certain actions on all your servers at once.

Debugging and Support

For support you can email to ~tyil/bashtard@lists.sr.ht. If you're reporting a bug, it is recommended to include a reproduction path which is as clear as possible. Additionally, you should include the output of the sysinfo subcommand.

License

This project is licensed under the terms of the AGPL-3.0.