Releases: holocm/holo
v3.0.1
Changes:
- Update the build system to use golangci-lint instead of the deprecated golint tool.
- The
make check
target can now be instructed to skip installing and running golangci-lint by settingSKIP_STATIC_CHECK=true
.
Packagers beware:
- The build system now expects Go 1.16 or newer.
- Since the results of
golangci-lint
are known to be unstable over time, esp. between different Go versions, packagers are advised to set the environment variableSKIP_STATIC_CHECK=true
when runningmake check
(as explained above).
v3.0.0
The headline feature for this release are generators, as described in detail in the new holo-generators(7)
manpage. It is still strongly encouraged to supply resource files statically in configuration packages if possible. Generated resource files are useful when static resource files just won't do, e.g. when the content (or existence) of a resource file depends on the availability of devices, or when resource files need to contain secrets that cannot be supplied in the configuration package for security reasons.
Special thanks to new contributor @Backfighter for contributing to the design and implementation of this feature.
Backwards-incompatible changes: None of these are technically backwards-incompatible, but all are likely enough to break existing plugins or scripts to warrant a major version bump.
- Instead of
/usr/share/holo/$PLUGIN_ID
, plugins now receive a virtualized resource directory as their$HOLO_RESOURCE_DIR
. The virtualized resource directory resides on transient storage and is destroyed when Holo exits. All resource files from/usr/share/holo/$PLUGIN_ID
are copied into this directory before invoking the plugin's scan, apply and diff operations. File mode and ownership are not copied, except for the executable bit on regular files. Plugins should not rely on any other file metadata being reflected correctly in the virtualized resource directory. - In the output of
holo scan --porcelain
,SOURCE
lines can now refer to generated resource files, using a special syntax that is not an actual file path. For example, if the generator/usr/share/holo/generators/example.sh
generates the resource file$HOLO_RESOURCE_DIR/foo/bar.toml
, the respective entities will reportSOURCE: /usr/share/holo/generators/example.sh::foo/bar.toml
.
Further changes:
- Generally proofread and improve documentation; both manpages and
holo --help
. - Update the build system to use Go modules.
Packagers beware:
- Because of the switch to Go modules, the build system now expects Go 1.14 or newer. Older Go versions might still work, but you may have to patch or substitute the build invocation in the
build/holo
make target. - Packages should add a
Provides
relation on the virtual packageholo-generators
since holo-build will generate dependencies on that package when files are installed to/usr/share/holo/generators
.
Bugfixes:
- Fix a bug in
holo-files
where--force
wasn't required in all cases where it should be. (#40) - Fix a bug in
holo-files
where, in some situations, it wrote the wrong thing to the persistent state directory, causing incorrect results on future calls toholo apply
. (#40) - Fix a bug in
holo-ssh-keys
where temporary files were written to/tmp
, but then not cleaned up.
v2.2
Changes:
- User definitions now have a new flag
SkipBaseGroups
which, if set, causesholo-build
to ignore existing auxiliary groups that this user is in before the firstholo apply
of this user. - Fix a bug where user definitions previously behaved as if
SkipBaseGroups = true
, even if the intention always was to behave likeSkipBaseGroups = false
(which is the default). - Fix a bug where
user:root
could not be provisioned to because the user ID 0 was misinterpreted as "no UID".
v2.1
v2.0.3
v2.0.2
v2.0
Backwards-incompatible changes:
holo-test
has been removed from the public interface. Plugins that wish to use it are advised to vendor it from this repo into their own.
Packagers beware:
- Add
Provides
andReplaces
package relations from this package toholo-run-scripts
,holo-ssh-keys
andholo-users-groups
(these packages are now included in this one). - New runtime dependencies:
shadow
(inherited fromholo-users-groups
) andopenssh
(inherited fromholo-ssh-keys
). See PACKAGING.md for details.
Changes:
holo
,holo-files
,holo-ssh-keys
andholo-users-groups
have been merged into a single binary, thus massively reducing total installation size.- Fix a bug in
holo-test
where tests could fail because of randomized names of temporary directories. - Fix a bug in
holo-users-groups
where scrubbing of a user definition fails when the definition only adds an auxiliary group to a pre-existing user with no other auxiliary groups. - Install the ALPM hook in the standard location.
- When Holo is installed via
go get
, show the version string "unknown" instead of an empty string.
v1.3.1
v1.3
Special thanks to new contributor @LukeShu who did a lot of the hard work that went into this release, both in terms of new features, boring refactoring work and documentation proof-reading.
Changes:
holo-files
now allows for fast-forwarding: When the computed content of a target file changes, but that change has already been done by the user,holo-files
will now skip writing the target file and just update/var/lib/holo/files/provisioned
instead of complaining that the target file does not match the previously provisioned content. (#24)- When invoking Holo, plugin IDs can be used as selectors. For example,
holo apply ssh-keys
will apply all entities from theholo-ssh-keys
plugin.
Bugfixes:
- Bring the scrubbing logic in line with the applying logic:
- When a resource file is deleted while the target base is updated, restore the updated target base instead of the old one. (#16)
- When a resource file is deleted and the saved version (
.pacsave
,.rpmsave
,.dpkg-old
) has been changed by the user, do not delete it. (#29) - Scrubbing has become more resilient against filesystem errors. When some file cannot be cleaned up, it will report that and keep going as much as possible. This is useful because Holo will forget about the entity once it is scrubbed, so the user should be informed about which actions remain to properly clean up the target file.
- On Arch Linux,
.pacsave.N
files are now handled properly, similar to the existing handling for.pacsave
files.
- Make sure that the cache directory (usually at
/tmp/holo.$$/
) is cleaned up even when an operation fails. (#20) - Fix
make clean
to run correctly when the source is extracted from a tarball rather than cloned from git. - Various fixes to
make check
to avoid false negatives.
Miscellaneous:
- Various internal refactorings.
- The documentation was proof-read and clarified in various locations.
- The test suite now checks code coverage.
- There are some files in
debian/
which should make it pretty easy to make a Debian package for Holo if anyone is interested in submitting it to Debian, Ubuntu etc. - Releases are now signed by GPG key
0xD6019A3E17CA2D96
.