Added
- The
var subcommand is now referenced in usage().
- A
pkg subcommand has been added, to allow for direct interaction with the
pkg_*() utilities provided by Bashtard.
config_subkeys() and config_subkeys_for have been added, to look up
subkeys defined in config files. These can help when you want to use a list
somewhere in your configuration.
- A
backup subcommand has been added. This backup system uses borg, which must
be installed, but should be generic enough to be usable by most people out of
the box.
- The
Makefile has been extended with targets for creating packages for
GNU+Linux distributions.
- The
$BASHTARD_PLATFORM variable now contains an additional entry, init, to
allow for handling different init systems on GNU+Linux in a cleaner fashion.
- A
file_hash utility function has been added. It currently uses md5, but is
written in such a fashion that this can easily be updated for the future. Its
intent is to encapsulate differences between naming and usage of hashing
utilities found on different systems.
- A
dir_hash utility function has been added, which will give you a hash based
on the file contents of a directory. This function will find files
recursively, calculate a hash for each of them, and then calculate a hash
based on the total result. The intended goal is to allow running before and
after templating some files, to deduce whether something actually changed.
- A
diff subcommand has been added to show all non-committed changes. It is a
convenience wrapper to avoid having to change directory and run git diff to
get an overview of all pending changes.
- A
pull subcommand has been added to only pull the latest changes into the
$BASHTARD_ETCDIR, without running sync on all the playbooks.
- A new global variable,
$BASHTARD_PLAYBOOK_VARS has been added. Currently,
its only purpose is to check for “required” variables to be used in the
playbook. Before an add or sync, any variables declared to be required
in the $BASHTARD_PLAYBOOK_VARS array will be checked to be non-empty. If any
are empty, an error will be thrown and the playbook will not be ran.
- A new directory has been added,
data.d, for data that should be shared
between playbook runs. This new directory is intended to create a clearer
seperation between a playbook and a user’s specific data used by the playbook,
which in turn should make re-using playbooks easier.
- A convenience function has been introduced,
playbook_path(), which can give
you the absolute path to the playbook’s base or data directory.
- A
top subcommand has been added to give some generic information of all
nodes known to Bashtard. It uses information from the sysinfo subcommand,
which it will pull in through an ssh invocation.
Changed
- The
ssh subcommand’s configuration has been nested under bashtard, e.g.
ssh.host is now bashtard.ssh.host. It should also be correctly using this
value for establishing the SSH connection.
svc_enable() now checks for the rc.d file to exist before running grep
on it.
pkg_*() functions no longer require a pkg.* value to be defined. If one
is not set explicitly, a warning will be generated, but the original name
passed to the pkg_*() function will be used by the host’s package manager.
datetime() now always passes -u on to date.
- All manpages now include a
NAME section.
- The
sync subcomman will now stash any changes before it attempts to
pull. Afterwards, stash pop will be ran to apply the last stashed
changes again.