Skip to content

Releases: holocm/holo

v3.0.1

26 Dec 11:52
v3.0.1
Compare
Choose a tag to compare

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 setting SKIP_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 variable SKIP_STATIC_CHECK=true when running make check (as explained above).

v3.0.0

06 Mar 17:27
v3.0.0
Compare
Choose a tag to compare

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 report SOURCE: /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 package holo-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 to holo apply. (#40)
  • Fix a bug in holo-ssh-keys where temporary files were written to /tmp, but then not cleaned up.

v2.2

07 Dec 16:25
v2.2
Compare
Choose a tag to compare

Changes:

  • User definitions now have a new flag SkipBaseGroups which, if set, causes holo-build to ignore existing auxiliary groups that this user is in before the first holo apply of this user.
  • Fix a bug where user definitions previously behaved as if SkipBaseGroups = true, even if the intention always was to behave like SkipBaseGroups = 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

30 Nov 16:38
v2.1
Compare
Choose a tag to compare

Changes:

  • holo-files now recognizes Alpine Linux and derivatives and handles .apk-new files correctly on these distributions.

v2.0.3

22 Oct 09:50
v2.0.3
Compare
Choose a tag to compare

This contains the actual fix for the bugfix that was supposed to be fixed in the previous release.

v2.0.2

21 Oct 14:22
v2.0.2
Compare
Choose a tag to compare

Bugfixes:

  • Fix a bug where most invocations of holo would create empty directories called base and provisioned in the current working directory.

v2.0

18 Aug 16:42
v2.0
Compare
Choose a tag to compare

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 and Replaces package relations from this package to holo-run-scripts, holo-ssh-keys and holo-users-groups (these packages are now included in this one).
  • New runtime dependencies: shadow (inherited from holo-users-groups) and openssh (inherited from holo-ssh-keys). See PACKAGING.md for details.

Changes:

  • holo, holo-files, holo-ssh-keys and holo-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

19 Mar 20:09
v1.3.1
Compare
Choose a tag to compare

Bugfixes:

  • Fix a bug where, on Arch Linux, the post-installation hook could get confused when Holo sorted entity names differently than sort(1) did.

v1.3

18 Mar 17:34
v1.3
Compare
Choose a tag to compare

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 the holo-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.

v1.2.1

25 May 19:18
Compare
Choose a tag to compare

Bugfixes:

  • Fix installed holorc snippet.