Skip to content

Add an OpenVox 8 to 9 upgrade guide to the 9.x docs - #461

Open
miharp wants to merge 16 commits into
OpenVoxProject:masterfrom
miharp:docs/openvox8-to-9-upgrade
Open

miharp wants to merge 16 commits into
OpenVoxProject:masterfrom
miharp:docs/openvox8-to-9-upgrade

Conversation

@miharp

@miharp miharp commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Adds an upgrade-planning page to the 9.x collection, "Upgrading from OpenVox 8 to OpenVox 9", covering what to review before moving a production deployment, alongside the existing package-mechanics page (upgrade_minor). Modeled on the shape of Puppet Core's 8-to-9 guide, with every claim checked against the OpenVox 9 sources rather than copied. Updated for the 9.0.0 release: the prerelease callout and the rc-specific notes are gone, and the page carries the details from the GA release notes and announcement (support window for OpenVox 8, platform drops, Java packaging and the Java 17 crash symptom, PostgreSQL versions, unvendored gems, the invoke-rc.d fallback removal, and a section on Windows agents defaulting to UTF-8).

Part of #456. The page links to the server 9.x, OpenVoxDB 9.x, and OpenFact 6.x release notes and to the server 9.x auth.conf page; #457, #458, and #459 have merged, so every link on the page resolves on master.

What the page covers

  • Component table: Ruby 3.2 to 4.0, OpenSSL 3.0 to 3.5, OpenFact 5 to 6, JRuby 9.4 to 10.1, Java 21 or 25 (17 dropped), curl no longer bundled, puppet-resource_api 1.9 to 2.0, with a link to the component-versions page for exact versions and a note on the new major versions of the vendored *_core modules.
  • Before-you-upgrade checklist: latest 8.x first, per-component release notes, platform coverage at GA (no 9 packages for EL 7, Amazon Linux 2, Fedora 42, Debian 11, or Ubuntu 25.04; Debian 12 agent only), backups.
  • Ruby 4.0 review guidance for custom facts, functions, types, providers, and agent- or server-installed gems, including the Kernel#open pipe removal, Net::HTTP no longer sending a default Content-Type header, and the libraries no longer shipped (base64, multi_json, the full cgi library on the agent; gettext on the server).
  • OpenFact 6 changes that affect fact code (Ruby 3.0+, exec/which deprecations, time_limit/limit aliases, ldapname removal, /opt/puppetlabs/bin search path).
  • Behavior changes verified in the prerelease sources: deferred functions preprocessed by default again (openvox#462), report storage opt-in (openvox#583), and the server setting fallback (openvox#536). An agent with nothing that names a server fails whether it runs as root or not; the page quotes both messages, since the non-root text differs. As of 9.0.0-rc2 the check is satisfied by server, server_list, SRV records, or (for their own services) ca_server and report_server (openvox#659), so the rc1 workaround of keeping a server entry next to server_list is gone from the page.
  • Removed settings (configprint, pluginsync, data_binding_terminus, environment_data_provider) and other removals (checksum-like file content values no longer fetched from the filebucket (openvox#170), regsubst encoding argument, the systemd provider's invoke-rc.d fallback on Debian (openvox#562), pe_serverversion, zone_core, Java keystores, legacy PAL APIs).
  • Server and OpenVoxDB changes: Java 21/25 pulled in by the package dependency (EL 8 and FIPS packages are Java 21 only; a Java 17 start crashes with ClassNotFoundException: java.util.SequencedCollection), the launcher and JAVA_BIN handling, the filebucket read-authorization change (openvox-server#549) and the caveat that a modified auth.conf is kept by the package and so keeps its 8.x rules, Jetty 12 with the OpenVoxDB bootstrap.cfg jetty10-service pitfall for upgrades from 8.14.0 or earlier, PostgreSQL 14 minimum (tested against 15, 16, and 18), and the openvox-server and openvoxdb packages' dependency on agent 9 (openvoxdb-termini is unversioned, verified against the published rc1 apt and yum metadata).
  • Windows agents default to UTF-8: the Ruby 3.2 build in OpenVoxProject/puppet-runtime applies revert_ruby_utf8_default_encoding.patch on Windows and the Ruby 4.0 build applies no patches, so OpenVox 9 Windows agents get upstream Ruby's UTF-8 default external encoding (the same change Puppet Core 9 documents). Also notes the MSYS2/UCRT build and the openvox9 installer directory.
  • Test-then-upgrade checklist and upgrade order, including the switch to the openvox9-release repository package (on Debian and Ubuntu openvox8-release has to be removed first, since both ship /etc/apt/preferences.d/openvox-release.pref; on EL they coexist). The 9.x upgrade_minor page points at that step. The final step upgrades every OpenVox package on a server host in one package manager transaction, because the 8.x server and database packages require openvox-agent below 9.0.0 while the 9.x packages require 9.0.0 or newer, so a host running both cannot upgrade them one at a time; the server-before-database order applies only across separate hosts.

Also adds the nav entry (before "Upgrading OpenVox 9") and cross-links the page from the breaking-changes callout in upgrade_minor.

File Change
upgrade_major.md New page
upgrade_minor.md Callout links to the new page; the Linux package section points at the repository-switch step; the recommended-order section says a host running several components upgrades them in one transaction
openvox_9x.yml Nav entry

Checks

  • markdownlint clean; jekyll build clean; the page renders under /openvox/9.x/upgrade_major.html and the nav and upgrade_minor callout link to it. Every cross-collection link resolves now that Add OpenVox Server 9.x docs collection as a preview (latest stays on 8.x) #457, Add OpenVoxDB 9.x docs collection as a preview (latest stays on 8.x) #458, and Add OpenFact 6.x docs collection as a preview (latest stays on 5.x) #459 are merged.
  • Every testable statement on the page was run against a 9.0.0-rc1 lab (EL9, EL10, Ubuntu 24.04; 62 checks on the server host and 43 per agent, plus an in-place 8.28.1 to rc1 agent upgrade for the gem section): all pass. Four observations from that run are folded into the text: the non-root missing-server message, the removed ldapname option making a fact resolve to nothing rather than raising, a version 3 hiera.yaml still loading with a deprecation warning, and the removed settings being ignored silently where 8 warned. Not testable there and taken from sources only: the dropped Debian 11/12 and Amazon Linux 2 packages, the gem's Ruby floor, module unit tests on Ruby 4, report processors under JRuby 10, and the PAL APIs.
  • Package facts (release-package coexistence on EL, the apt preferences-file conflict on Debian/Ubuntu, the termini dependency) were checked against the published rc1 packages and repository metadata.
  • The 9.0.0-rc4 update (the server check, its root error text, the checksum-like content change, and the Net::HTTP header change) is taken from the rc4 source and Ruby 4.0's NEWS file and has not been run in the lab.
  • The 9.0.0 update is source-verified only: the GA release notes for openvox 9.0.0, openvox-server 9.0.1, and openvoxdb 9.0.0, the release announcement, _data/supported_platforms.yml, and the puppet-runtime Ruby build configs for the Windows encoding section. Nothing in it has been run in the lab, and the Windows section in particular has not been tried on a Windows node.
  • The modified-auth.conf bullet: auth.conf is config(noreplace) in the 9.0.0-rc2 EL10 rpm and is listed in conffiles in the Ubuntu 24.04 deb, and the two rule differences come from a diff of the shipped file between 8.15.2 and 9.0.0-rc2. In an 8.28.1 to 9.0.0-rc2/rc4 lab upgrade (EL10 server, EL9 and Ubuntu 24.04 agents) with the stock file, a filebucket read with an agent certificate returned 403 and the same read with the server's certificate succeeded. The kept-file behavior was observed on that run for puppet.conf (.rpmnew on EL, .dpkg-dist on Ubuntu); an upgrade with a modified auth.conf itself has not been run.

Assisted by Claude.

@miharp
miharp force-pushed the docs/openvox8-to-9-upgrade branch 2 times, most recently from 25bf2e7 to 3934834 Compare September 3, 2026 14:07
@miharp
miharp force-pushed the docs/openvox8-to-9-upgrade branch 7 times, most recently from 72cf95f to 524eaff Compare September 10, 2026 12:45
@miharp
miharp marked this pull request as ready for review September 10, 2026 12:47
@miharp
miharp requested a review from a team as a code owner September 10, 2026 12:47
@miharp
miharp force-pushed the docs/openvox8-to-9-upgrade branch from 524eaff to f4821b4 Compare September 10, 2026 13:02
| OpenSSL (bundled with `openvox-agent`) | 3.0 | 3.5 |
| OpenFact (bundled with `openvox-agent`) | 5.x | 6.x |
| JRuby (bundled with `openvox-server`) | 9.4 | 10.1 |
| Java (required by `openvox-server` and `openvoxdb`) | 17 or 21 | 21 or 25 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe mention that openvox-agent 8 vendored curl, but we dropped that in 9.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread docs/_openvox_9x/upgrade_major.md Outdated
On EL, the two release packages can be installed side by side and the package manager prefers the 9.x packages; remove `openvox8-release` once the host is upgraded.

```bash
sudo rpm -Uvh https://yum.voxpupuli.org/openvox9-release-el-9.noarch.rpm

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
sudo rpm -Uvh https://yum.voxpupuli.org/openvox9-release-el-9.noarch.rpm
sudo dnf install https://yum.voxpupuli.org/openvox9-release-el-9.noarch.rpm

let's promote new tools!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

miharp and others added 7 commits October 3, 2026 09:42
Add an upgrade-planning page to the 9.x collection covering what to
review before moving a production deployment from OpenVox 8 to 9,
alongside the existing package-mechanics page (upgrade_minor):

- Component version table: Ruby 3.2 -> 4.0, OpenSSL 3.0 -> 3.5,
  OpenFact 5.x -> 6.x, JRuby 9.4 -> 10.1, Java 21/25 (17 dropped)
- Ruby 4.0 review guidance for custom facts, functions, types,
  providers, and agent/server-installed gems
- Behavior changes verified against the 9.0.0 prerelease sources:
  deferred functions preprocessed by default again (openvox#462),
  reports default store -> none (openvox#583), and the server
  setting fallback deprecation (openvox#536 - root agents still
  fall back with a warning, non-root runs fail; the code keeps the
  root fallback in beta2, so the page documents the deprecation
  rather than a hard removal)
- Removed settings (configprint, pluginsync, data_binding_terminus,
  environment_data_provider) and other removals (regsubst encoding
  argument, pe_serverversion fact, zone_core module, Java keystores,
  legacy PAL APIs)
- Server/OpenVoxDB notes: Java 17 dropped, Jetty 12, OpenVoxDB
  Debian 11/12 packages discontinued, openvox-server 9 requires
  openvox-agent 9 on the same host
- Test-then-upgrade checklist and upgrade order

Also add the nav entry and cross-link the page from the breaking-
changes callout in upgrade_minor.

Updated after the server, OpenVoxDB, and OpenFact 6 preview cutovers
(OpenVoxProject#457, OpenVoxProject#458, OpenVoxProject#459): per-component release-notes links, OpenVox Server 9
also dropping Debian 11/12 and Amazon Linux 2, the OpenVox Server 9
filebucket read-authorization change (openvox-server#549), the OpenVoxDB
bootstrap.cfg jetty10-service pitfall for upgrades from 8.14.0 or
earlier, the PostgreSQL 14 minimum, and the concrete OpenFact 6 changes
that affect fact code.

Part of OpenVoxProject#456

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
…uide

OpenVox Server 9.0.0-rc1 moved to EZbake 4.1.0, which runs the JVM
directly from the systemd unit.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
…s an error in rc1

- New section: gems installed into the agent's Ruby live under
  lib/ruby/gems/3.2.0 and are invisible to OpenVox 9's Ruby 4.0; the old
  directory and the bin wrappers stay behind, so tools like r10k fail with
  Gem::GemNotFoundException until reinstalled. puppet_gem-managed gems come
  back on the first run; hand-installed ones do not. puppetserver gems are
  unaffected (jruby-gems is not version-specific).
- The missing-server paragraph now reflects 9.0.0-rc1, where the run fails
  with an error for root as well (openvox#623), instead of the beta-era
  warning.

Both verified on a CentOS Stream 9/10 and Ubuntu 24.04 lab on 9.0.0-rc1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
…nlint

Signed-off-by: Michael Harp <mike@mikeharp.com>
OpenVoxDB 9 now requires openvox-agent 9 on the same host and, like the
server, runs the JVM directly from the systemd unit, so JAVA_BIN in the
init config file is ignored.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
- puppet has no gem subcommand; reinstall gems with
  /opt/puppetlabs/puppet/bin/gem.
- Add the openvox9-release step to the upgrade checklist. On Debian and
  Ubuntu openvox8-release must be removed first because both packages
  ship /etc/apt/preferences.d/openvox-release.pref; on EL they coexist.
  Point the package-commands page at that step.
- openvoxdb-termini depends on openvox-agent with no version, so only
  openvox-server and openvoxdb pull the agent to 9.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
From the rc1 lab run of the upgrade guide: the non-root missing-server
error has different text from the root one, a removed ldapname option
makes the fact resolve to nothing instead of raising, a version 3
hiera.yaml still loads on 9 with a deprecation warning, and the four
removed settings are ignored silently where 8 warned.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
miharp and others added 7 commits October 3, 2026 09:42
openvox-agent 8 vendors curl (puppet-runtime agent-runtime-8.x includes
the curl component); the 9 runtime does not. Install the EL release
package with dnf rather than rpm -Uvh.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
…ords

An agent that finds its servers through server_list or DNS SRV records
and has no server entry hits the same error as one with no server at
all. The fix is merged upstream (openvox#659) but not yet released, so
describe the workaround of keeping a server entry next to server_list.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
Puppet's own 8 to 9 upgrade page calls out the post-quantum algorithms
in OpenSSL 3.5 and asks module authors to update their dependency
metadata. Both apply to OpenVox 9, so add a sentence on each, and link
the unit-test step to the DevKit unit testing page. The metadata step
names the openvox requirement entry, which the Vox Pupuli tooling
reads, and warns against widening a puppet entry to cover 9.x, since
Vox Pupuli dropped that entry once Puppet packages went closed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
The rc1 server error and the r10k gem error each ran past the code
block width in the rendered page, hiding their tails behind a scroll.
Break them at natural points. Split the metadata.json step into two
paragraphs so the puppet-entry warning is not buried.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
OpenVox Server 9.0.0-rc2 and OpenVoxDB 9.0.0-rc2 moved to ezbake 4.2.0,
whose packages install a Java launcher: the systemd unit starts it, it
runs the first installed Java from the versions the package supports, and
it honors JAVA_BIN from the defaults file when that points at one of those
versions. Replace the statement that the unit runs a build-time Java and
that OpenVoxDB ignores JAVA_BIN.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
The server check changed in rc2: server_list, SRV records, and (for
their own services) ca_server and report_server now satisfy it, so the
rc1 workaround of keeping a server entry next to server_list is gone.
The root error text is updated to match the rc4 source.

Add two changes the guide was missing: file content that looks like a
checksum is now written literally (openvox#170), and Ruby 4.0's
Net::HTTP no longer sends a default Content-Type header.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
auth.conf is a configuration file in both the rpm (config(noreplace))
and deb (conffiles) server packages, so an edited or module-managed
copy survives the upgrade and the 9.x file lands beside it as .rpmnew
or .dpkg-dist. The server then still runs the 8.x filebucket rule that
lets every agent certificate read bucket content, and lacks the rc2
rule for clearing the environment cache, with no error or log message.

Add a bullet that says so, how to check for a modified file before the
upgrade, and how to confirm the restriction afterwards. The filebucket
bullet told readers to add their own rule before upgrading, which is
itself an edit that keeps the old file; reword it and point at the
merge step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp
miharp force-pushed the docs/openvox8-to-9-upgrade branch from a62e1d3 to f46a167 Compare October 3, 2026 13:42
OpenVox 9.0.0 shipped on 2026-10-02, so the page no longer describes a
prerelease. Drop the prerelease callout and the rc1/rc2 "as of" notes,
and add the details that the GA release notes and announcement carry
which the guide lacked:

- OpenVox 8 stays supported for at least six months after 9.0.0.
- Platform drops at GA (EL 7, Amazon Linux 2, Fedora 42, Debian 11,
  Ubuntu 25.04; Debian 12 agent only).
- puppet-resource_api 2.0 and the new major versions of the vendored
  *_core modules.
- base64, multi_json, and the full cgi library are no longer shipped
  with the agent; gettext is no longer vendored on the server.
- The systemd provider no longer falls back to invoke-rc.d on Debian.
- Java: packages pull in Java 25 or 21, EL 8 is Java 21 only, FIPS is
  Java 21 only, and the Java 17 crash symptom.
- OpenVoxDB is tested against PostgreSQL 15, 16, and 18.
- Windows agents default to UTF-8: the Ruby 4.0 build in puppet-runtime
  no longer applies the revert_ruby_utf8_default_encoding patch that the
  Ruby 3.2 build carries, and the MSI is built with MSYS2/UCRT.
- Server hosts upgrade agent, server, and database together because of
  the package dependencies in both directions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp
miharp marked this pull request as ready for review October 3, 2026 14:15
The 8.x openvox-server and openvoxdb packages require openvox-agent
below 9.0.0 and the 9.x packages require 9.0.0 or newer, so a host that
runs both cannot upgrade the server first and the database later. Say
so on the upgrade guide's final step and on the mechanics page, whose
commands already upgrade all four packages together.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants