Skip to content

Tags: holocm/holo

Tags

v3.0.1

Toggle v3.0.1's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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

Toggle v3.0.0's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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.

v2.2

Toggle v2.2's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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

Toggle v2.1's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
Changes:

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

v2.0.3

Toggle v2.0.3's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
This contains the actual fix for the bugfix that was supposed to be f…

…ixed in the previous release.

v2.0.2

Toggle v2.0.2's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
Bugfixes:

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

v2.0.1

Toggle v2.0.1's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
Bugfixes:

- Fix a bug where, when applying a symlink over a file, `holo apply` would not stay silent if the symlink has already
  been provisioned.

v2.0

Toggle v2.0's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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.1

Toggle v1.3.1's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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

Toggle v1.3's commit message

Verified

This tag was signed with the committer’s verified signature.
majewsky Stefan Majewsky
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`.