Tags: holocm/holo
Tags
v3.0.1 (2022-12-26) Changes: - Update the build system to use [golangci-lint](https://golangci-lint.run/) 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 (2021-03-06) 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.
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.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` 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](./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 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`.
PreviousNext