- resource: Fixed typo in apt_key.sh
- core: Updated unit and acceptance test
- resource: Fixed a typo in apt_ppa.sh (@gbraekmans) [GH-173]
- core: Have resources check for dependent commands. Error early if missing. [GH-176]
- core: Added a new function ini_file in functions/ini_file.sh (@gbraekmans) [GH-180]
- core: Lots of updates and fixes to support running in
set -eu
mode (@multicast) [GH-198] - resource:
file.ini
has been rewritten to take advantage of new ini functions (@gbraekmans) [GH-180] - resource: New
dnf.pkg
resource (@gbraekmans) [GH-175] - resource: New
dnf.copr
resource (@gbraekmans) [GH-175] - resource: New
dnf.repo
resource (@gbraekmans) [GH-175] - resource: Re-added
augeas.generic
resource [GH-189] - resource: New
ruby.gem
resource [GH-192] - resource: Added overwrite option to
os.symlink
[GH-193] - resource: Added
--name
parameter toapt.pkg
as an alias to--package
[GH-194]
- Fixed typo in
file.ini
resource. - Added
WAFFLES_NO_HELP
environment variable which will prevent--help
test from printing. This is due to incompatibilities withwafflescript
at the moment.
- Renamed
sudo.cmd
tosudoers.cmd
This commit is a major refactor of Waffles.
This repository can be considered Waffles "core". It contains the core functionality of Waffles as a suite of Bash scripts. These scripts can be sourced into any Bash script and then used to manage resources. The init.sh
script can also be source on the command-line and the user can interactively execute the Waffles-based resources.
Functionality that has been removed from this repository (data, profiles, stacks) will appear in separate repositories.
The previous incarnation of Waffles exists under the 0.22
branch. This branch will be maintained for a short time and will receive patches where appropriate.
os.symlink
heavily rewritten so options make more sense.
The concept of stdlib
was removed from Waffles. See this commit for details. You can use the contrib/legacy_migration.sh
script to convert your work. For now, all old stdlib.*
resource calls should be caught and a warning will be printed. This will be removed in a future release.
- New Feature:
wafflescript
: Run a Waffles script by using#!/usr/local/bin/wafflescript
as the interpreter. - New Feature: Waffleseeds: Compile a Waffles Role into a self-contained executable.
- New Feature: Stacks: Profiles can combine several scripts into a stack located in
profile_name/stacks/stack_name.sh
. - Removed Feature:
stdlib.enable_*
functions have been removed. Possible breakage. - New Feature: Default remote dir is now
~/.waffles
. - New Feature: Timestamps in logs.
- New Functions:
waffles.pushd
andwaffles.popd
- New Resource:
stdlib.symlink
. - New Feature: Basic template support.
- New Feature:
$profile_name
,$profile_path
,$profile_file
variables. - New Feature: All output goes to STDOUT.
- New Feature:
stdlib.file_line
no longer requires a--name
parameter. Possible breakage. - New Feature:
stdlib.debconf
no longer requires a--name
parameter. Possible breakage. - New Feature: Toggle color output.
- Fixed: zero-prefixed permissions (750 -> 0750)
- Fixed: several
stdlib.ini
fixes. - Fixed: Account for multiple grants when checking with
mysql.grant
. - Fixed: Hostname and socket conflicts in
mysql.mycnf
.
- New Resource:
stdlib.sudo_exec
. - New Feature:
stdlib.title
is no longer required in profiles. Possible breakage. - New Feature: SSH retry and backoff.
- New Feature: Profile data.
- New Feature: git profiles.
- Enhanced: Moved stdlib-related things to an explicit
stdlib
directory.
- New Resource:
python.virtualenv
- New Resource:
python.pip
- Updated: Documentation
- Updated:
mysql.grant
can useALL
as an alias forALL PRIVILEGES
. - Fixed:
stdlib.apt_ppa
state. Thanks @primeroz. - Fixed: Determining Upstart-based statuses.
- New Feature: Host Profile support. Can manage files for an individual host.
- Enhanced: Added admonition plugin to docs.
- Enhanced: Lots of documentation updates.
- Enhanced:
stdlib.ini
: Allows settings without a[section]
. - Enhanced: Run
rsync
in quiet mode unless Waffles is run in debug mode. - Enhanced: Waffles remote: SSH key and better SITE directory handling.
- Enhanced:
stdlib.capture_error
returns exit codes. - Enhanced: Better support for required options.
- Updated:
consul.get_nodes
only returns node names and addresses. Not ports. - Updated: Several Augeas-based resources were refactored to use the new
augeas.generic
resource. - Removed:
consul.build_hosts_file
. - Fixed: git repo read.
- Fixed: Ensure the resource state is reset before each read.
- Fixed: Typo in sourcing RabbitMQ resource.
- Fixed:
stdlib.split
issue with repeating characters. - Fixed:
stdlib.array_*
functions were all refactored and tests have been created.
- New resource:
stdlib.sudo_cmd
. - New resource:
consul.template
. - New resource:
augeas.generic
. - New function:
stdlib.hash_keys
. - Enhanced
stdlib.ini
: Allows for single-word entries. - Fixed
stdlib.directory
. - Fixed
stdlib.debconf
. - Fixed
stdlib.file
. - Fixed
stdlib.ini
. - Fixed GRANT queries in
mysql.grant
. - Doc updates (@reduxionist).
- New resource: Initial Consul resources.
- Major resource refactor.
- Conditional quoting style changes.
- Test Kitchen additions and fixes.
- Reset subtitle on title change.
- New function:
stdlib.array_contains
. - Updated resource:
augeas.json_array
. - Fixed
version
option instdlib.apt
. - New resources: keepalived.
- New resource: More RabbitMQ resources.
- Ensure consistent quoting in conditionals.
- Added syntax check to tests.
- Fixed typo in sourcing RabbitMQ resource.
- New resource: apache.
- Renamed
stdlib.join
tostdlib.array_join
.
- New resource: nginx.
- Cleaning up catalog entries.
- Added multi-value option support.
- Added several array functions.
- New function:
stdlib.join
.
stdlib.split
now accepts multi-character delimiters.
- Fixing tests.
- Renamed
set_option
tocreate_option
.
- Added
system
flag tostdlib.useradd
. - Fixing tests.
- New resource: git.
- mkdocs updates.
- Documentation Updates.
- Added
stdlib.debug_mute
.
- Added two recipes: LXC and Terraform.
- Fixed documentation index.
Remote Deployment (push) Updates.
Enhancements were made to the push-based remote deployment:
- Able to handle explicit IPv6 addresses
- Able to specify a destination directory
- Able to specify if sudo should be used remotely
Waffles initial release.
Waffles is a simple configuration management and deployment system written in Bash. I started this project both to see if such a tool was possible as well as to create a more simple deployment system for my own experiments.
The initial release of Waffles contains a variety of resources and documentation. It's able to configure local nodes as well as remote nodes via rsync
.