Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,13 @@ jobs:
# Build each product/version's reference docs from the pin table in
# _data/products.yml into its collection (see `rake references:all`).
bundle exec rake references:all INSTALLPATH=docs
# Refresh the openvox-agent release-contents table from upstream pins.
# Falls back to the committed _data file if the GitHub API is unreachable.
# Refresh the component-version tables (agent, server, openvoxdb) from
# upstream pins. Each falls back to its committed _data file if the
# GitHub API is unreachable, so a transient failure never breaks the build.
bundle exec rake references:agent_versions || echo 'agent_versions refresh failed; using committed _data'
bundle exec rake references:server_versions || echo 'server_versions refresh failed; using committed _data'
bundle exec rake references:openvoxdb_versions || echo 'openvoxdb_versions refresh failed; using committed _data'
bundle exec rake references:openbolt_versions || echo 'openbolt_versions refresh failed; using committed _data'
bundle exec jekyll build
- name: Archive website
run: |
Expand Down
52 changes: 49 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,62 @@ namespace :references do
end
end

desc 'Generate _data/agent_release_contents.yml from upstream component pins'
# The agent/server/openvoxdb tables are per-OpenVox-series: each writes into a
# file named for the collection's nav_key (e.g. openvox_8x), so the component-
# versions page can render its own series via `site.data.<table>[page.nav]` and
# a future 9.x collection gets its own data file without colliding. The nav_key
# is derived from SERIES ("8." -> openvox_8x) and overridable with NAV_KEY.
openvox_nav_key = lambda do
ENV.fetch('NAV_KEY', "openvox_#{ENV.fetch('SERIES', '8.').gsub(/\D/, '')}x")
end

desc 'Generate _data/agent_release_contents/<nav_key>.yml from upstream component pins'
task :agent_versions do
require 'puppet_references/agent_release_table'
require 'puppet_references/release_tables'
series = ENV.fetch('SERIES', '8.')
min_version = ENV.fetch('MIN_RELEASE', '8.25.0')
path = ENV.fetch('AGENT_VERSIONS_DATA', '_data/agent_release_contents.yml')
path = ENV.fetch('AGENT_VERSIONS_DATA', "_data/agent_release_contents/#{openvox_nav_key.call}.yml")
rows = PuppetReferences::AgentReleaseTable.write_data_file(series:, min_version:, path:)
puts "Wrote #{rows.size} releases to #{path}"
end

desc 'Generate _data/server_release_contents/<nav_key>.yml from upstream component pins'
task :server_versions do
require 'puppet_references/release_tables'
series = ENV.fetch('SERIES', '8.')
min_version = ENV.fetch('MIN_RELEASE', '8.12.0')
path = ENV.fetch('SERVER_VERSIONS_DATA', "_data/server_release_contents/#{openvox_nav_key.call}.yml")
rows = PuppetReferences::ServerReleaseTable.write_data_file(series:, min_version:, path:)
puts "Wrote #{rows.size} releases to #{path}"
end

desc 'Generate _data/openvoxdb_release_contents/<nav_key>.yml from upstream releases'
task :openvoxdb_versions do
require 'puppet_references/release_tables'
series = ENV.fetch('SERIES', '8.')
min_version = ENV.fetch('MIN_RELEASE', '8.12.0')
path = ENV.fetch('OPENVOXDB_VERSIONS_DATA', "_data/openvoxdb_release_contents/#{openvox_nav_key.call}.yml")
rows = PuppetReferences::OpenvoxdbReleaseTable.write_data_file(series:, min_version:, path:)
puts "Wrote #{rows.size} releases to #{path}"
end

desc 'Generate _data/openbolt_release_contents.yml from upstream component pins'
task :openbolt_versions do
require 'puppet_references/release_tables'
# OpenBolt is on its own 5.x line, independent of the OpenVox major, so it uses
# its own OPENBOLT_SERIES / OPENBOLT_MIN_RELEASE rather than the generic
# SERIES / MIN_RELEASE. That keeps an OpenVox 9.x regeneration (SERIES=9.) from
# leaking into OpenBolt, where it would resolve no 9.x releases and abort.
series = ENV.fetch('OPENBOLT_SERIES', '5.')
min_version = ENV.fetch('OPENBOLT_MIN_RELEASE', '5.1.0')
path = ENV.fetch('OPENBOLT_VERSIONS_DATA', '_data/openbolt_release_contents.yml')
rows = PuppetReferences::OpenboltReleaseTable.write_data_file(series:, min_version:, path:)
puts "Wrote #{rows.size} releases to #{path}"
end

desc 'Generate all component-version data files (agent, server, openvoxdb, openbolt)'
task component_versions: %i[agent_versions server_versions openvoxdb_versions openbolt_versions]

task :check do
puts 'No VERSION given to build references for - using latest tag' unless ENV['VERSION']
puts "Building into collection #{ENV.fetch('COLLECTION')}" if ENV['COLLECTION']
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
---
- release: 8.28.0
openfact: 5.6.1
ruby: 3.2.11
openssl: 3.0.21
curl: 8.20.0
- release: 8.27.0
openfact: 5.6.1
ruby: 3.2.11
openssl: 3.0.20
curl: 8.20.0
r10k: 5.0.3
- release: 8.26.2
openfact: 5.6.0
ruby: 3.2.11
openssl: 3.0.20
curl: 8.19.0
r10k: 5.0.3
- release: 8.26.1
openfact: 5.6.0
ruby: 3.2.11
openssl: 3.0.20
curl: 8.19.0
r10k: 5.0.3
- release: 8.26.0
openfact: 5.6.0
ruby: 3.2.11
openssl: 3.0.20
curl: 8.19.0
r10k: 5.0.3
- release: 8.25.0
openfact: 5.4.0
ruby: 3.2.10
openssl: 3.0.19
curl: 8.18.0
r10k: 5.0.2
2 changes: 2 additions & 0 deletions _data/nav/openvox_8x.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
link: "system_requirements.html"
- text: About openvox-agent
link: "about_agent.html"
- text: Component versions in recent releases
link: "component_versions.html"
- text: Getting started
items:
- text: Getting started with OpenVox
Expand Down
21 changes: 21 additions & 0 deletions _data/openbolt_release_contents.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
- release: 5.6.0
openvox: "~> 8.0"
ruby: 3.2.11
openssl: 3.0.21
r10k: 5.0.3
- release: 5.5.0
openvox: "~> 8.0"
ruby: 3.2.11
openssl: 3.0.20
r10k: 5.0.3
- release: 5.4.0
openvox: "~> 8.0"
ruby: 3.2.10
openssl: 3.0.19
r10k: 5.0.2
- release: 5.3.0
openvox: "~> 8.0"
ruby: 3.2.9
openssl: 3.0.18
r10k: 5.0.2
5 changes: 5 additions & 0 deletions _data/openvoxdb_release_contents/openvox_8x.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
- release: 8.14.0
- release: 8.13.0
- release: 8.12.1
- release: 8.12.0
9 changes: 9 additions & 0 deletions _data/server_release_contents/openvox_8x.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
- release: 8.14.0
jruby: 9.4.12.1
- release: 8.13.0
jruby: 9.4.12.1
- release: 8.12.1
jruby: 9.4.12.1
- release: 8.12.0
jruby: 9.4.12.1
18 changes: 5 additions & 13 deletions docs/_openvox_8x/about_agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ title: "About openvox-agent"
[services_agent]: ./services_agent_unix.html
[services_apply]: ./services_apply.html
[openvox_server]: /openvox-server/latest/
[component_versions]: ./component_versions.html

`openvox-agent` is the core OpenVox package for managed nodes and standalone use.
It bundles the OpenVox runtime and the dependencies needed to run it, so it is the
Expand Down Expand Up @@ -45,16 +46,7 @@ even if the core OpenVox language and command behavior stay the same.
For package-specific changes, see the [OpenVox release notes][release_notes] and the
latest [OpenVox Server documentation][openvox_server].

## Release contents of `openvox-agent` 8.x

This table is generated from the upstream component pins for each release.
Regenerate it with `bundle exec rake references:agent_versions`.

<!-- markdownlint-disable MD055 MD056 -->

| OpenVox release | OpenFact | Ruby | OpenSSL | curl | r10k |
| --- | --- | --- | --- | --- | --- |
{% for r in site.data.agent_release_contents %}| {{ r.release }} | {{ r.openfact }} | {{ r.ruby }} | {{ r.openssl }} | {{ r.curl }} | {{ r.r10k }} |
{% endfor %}

<!-- markdownlint-enable MD055 MD056 -->
For the bundled versions of OpenFact, Ruby, OpenSSL, and curl in each
`openvox-agent` release, see
[Component versions in recent OpenVox releases][component_versions], which also
covers the server and database components.
123 changes: 123 additions & 0 deletions docs/_openvox_8x/component_versions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
---
layout: default
title: "Component versions in recent OpenVox releases"
---

[about_agent]: ./about_agent.html
[openfact]: /openfact/latest/
[openbolt]: /openbolt/latest/
[openbolt_apply]: /openbolt/latest/applying_manifest_blocks.html
[server_install_pre]: /openvox-server/latest/install_pre.html
[openvoxdb_postgres]: /openvoxdb/latest/configure_postgres.html

{% assign nav_key = page.nav %}

This page lists the versions of each stack component shipped in recent OpenVox
releases, so you can answer "what's actually in this release?" in one place.

## Why there are several tables

Unlike a single bundled product, OpenVox ships its components on **independent
version lines**. `openvox-agent`, `openvox-server`, `openvoxdb`, and `openbolt` are
released separately and do not share a version number (for example, the newest
agent, server, and database releases all carry different versions, and OpenBolt is
on its own 5.x line). There is no single "OpenVox platform version" that pins all
of them at once, so each component is shown in its own table, keyed by that
component's release.

The bundled-component columns are **generated** from upstream component pins, so
they don't drift. Columns that aren't bundled or pinned anywhere (Java and
PostgreSQL) are supported-version requirements maintained by hand; see the note
under each table.

<!-- markdownlint-disable MD055 MD056 -->

## Agent and runtime components

These ship inside the `openvox-agent` package (see [About openvox-agent][about_agent]).
The OpenFact column is the **bundled** OpenFact version and links to the
[OpenFact documentation][openfact], which is the authoritative source for OpenFact
changes; this page is only a pointer.

| OpenVox release | OpenFact | Ruby | OpenSSL | curl |
| --- | --- | --- | --- | --- |
{% for r in site.data.agent_release_contents[nav_key] %}| {{ r.release }} | [{{ r.openfact }}][openfact] | {{ r.ruby }} | {{ r.openssl }} | {{ r.curl }} |
{% endfor %}

## Server components

These ship with the `openvox-server` package. JRuby is the bundled version,
resolved from the server's pinned `jruby-utils`/`jruby-deps`.

| OpenVox Server release | JRuby | Java |
| --- | --- | --- |
{% for r in site.data.server_release_contents[nav_key] %}| {{ r.release }} | {{ r.jruby }} | 17, 21 |
{% endfor %}

> **Java is not bundled.** OpenVox Server requires a supported JDK to be installed
> separately. The Java column shows the currently supported major versions, not a
> per-release pin; see [Before you install OpenVox Server][server_install_pre].

## Data components

OpenVoxDB ships in the `openvoxdb` package on its own release line. The
`openvoxdb-termini` package (the terminus plugins that let OpenVox Server and
agents talk to OpenVoxDB) is released in lockstep at the **same version** as
`openvoxdb`, so it is not listed separately.

| OpenVoxDB release | PostgreSQL |
| --- | --- |
{% for r in site.data.openvoxdb_release_contents[nav_key] %}| {{ r.release }} | 11+ (14+ recommended) |
{% endfor %}

> **PostgreSQL is not bundled.** OpenVoxDB connects to a PostgreSQL server you
> install separately (the `puppet-openvoxdb` module can install it for you). The
> PostgreSQL column shows the supported minimum (PostgreSQL 11; version 14 or newer
> recommended), not a per-release pin; see [Configuring PostgreSQL][openvoxdb_postgres].

## OpenBolt

[OpenBolt][openbolt] is the orchestration tool. It is not part of the
agent/server/data stack above and ships on its own **5.x** release line, bundling
its own runtime. See the [OpenBolt documentation][openbolt] for OpenBolt's own
release notes.

OpenBolt is the only OpenVox package that **bundles r10k**. Although r10k is
typically run on a server to deploy environments from a control repo, it is not
shipped in `openvox-server` (or `openvox-agent`); on a server you install it
separately, for example with the `puppet/r10k` module or a `gem install`.

| OpenBolt release | OpenVox | Ruby | OpenSSL | r10k |
| --- | --- | --- | --- | --- |
{% for r in site.data.openbolt_release_contents %}| {{ r.release }} | {{ r.openvox }} | {{ r.ruby }} | {{ r.openssl }} | {{ r.r10k }} |
{% endfor %}

> **The OpenVox column is a requirement, not a pinned version.** OpenBolt bundles
> OpenVox for [`bolt apply`][openbolt_apply], declared in its gemspec as a range
> (`~> 8.0`); the exact version is resolved at build time (for example, OpenBolt
> 5.6.0 bundles OpenVox 8.28.0). For `bolt apply`, OpenBolt compiles the catalog
> with this bundled OpenVox and installs the `openvox-agent` package on targets via
> `apply_prep` — so you don't install OpenVox separately to use it.

<!-- markdownlint-enable MD055 MD056 -->

## Regenerating this page

The agent/runtime, server, OpenVoxDB, and OpenBolt columns are generated from
upstream release metadata. Regenerate the data with:

```bash
bundle exec rake references:component_versions
```

The agent, server, and OpenVoxDB tables are per-OpenVox-series: each task writes a
file named for the collection's nav_key, so the page renders its own series via
`site.data.<table>[page.nav]`. With the 8.x defaults this writes
`_data/agent_release_contents/openvox_8x.yml`,
`_data/server_release_contents/openvox_8x.yml`, and
`_data/openvoxdb_release_contents/openvox_8x.yml`. OpenBolt is independent of the
OpenVox major and is shared across series in `_data/openbolt_release_contents.yml`.

When a 9.x collection is added, run the per-series tasks again with `SERIES=9.`
(and an appropriate `MIN_RELEASE`); they write `…/openvox_9x.yml` files, and the
copied 9.x page reads them automatically through its own `page.nav`.
2 changes: 1 addition & 1 deletion docs/_openvox_8x/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
title: "OpenVox 8"
---

OpenVox is a community-maintained implementation of Puppet — a configuration management system for Linux, Unix, and Windows. It manages system state through a declarative language, compiling node-specific catalogs and enforcing them on each managed host.

Check failure on line 6 in docs/_openvox_8x/index.md

View workflow job for this annotation

GitHub Actions / markdown-lint

Line length

docs/_openvox_8x/index.md:6:211 MD013/line-length Line length [Expected: 210; Actual: 254] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md013.md

When Perforce discontinued public distribution of Puppet Open Source in late 2024, Overlook InfraTech stepped in with community packaging, and the project was subsequently adopted under [Vox Pupuli](https://voxpupuli.org/) stewardship as OpenVox. A Puppet Standards Steering Committee guides language and feature evolution going forward.

Check failure on line 8 in docs/_openvox_8x/index.md

View workflow job for this annotation

GitHub Actions / markdown-lint

Line length

docs/_openvox_8x/index.md:8:211 MD013/line-length Line length [Expected: 210; Actual: 337] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md013.md

OpenVox is downstream-compatible with Puppet Open Source — existing manifests, modules, Hiera data, and tooling work unchanged.

Expand All @@ -13,7 +13,7 @@

OpenVox operates in two modes:

**Agent/server** — Managed nodes run `openvox-agent` as a background service. Periodically, each agent sends facts (system inventory data) to an [OpenVox Server](/openvox-server/latest/), receives a compiled catalog, and enforces it. Results are reported back to the server. Communication is HTTPS with mutual TLS.

Check failure on line 16 in docs/_openvox_8x/index.md

View workflow job for this annotation

GitHub Actions / markdown-lint

Line length

docs/_openvox_8x/index.md:16:211 MD013/line-length Line length [Expected: 210; Actual: 314] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md013.md

**Standalone** — The `puppet apply` command compiles and applies a catalog locally, with no server required.

Expand All @@ -24,7 +24,7 @@
| `openvox-agent` | OpenVox, OpenFact, Hiera, bundled Ruby and OpenSSL |
| `openvox-server` | JVM-based catalog server; depends on `openvox-agent` |

See [Component versions in openvox-agent](about_agent.html) for exact version tables.
See [Component versions in recent OpenVox releases](component_versions.html) for exact version tables.

## Getting started

Expand Down
Loading
Loading