diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 8d0a1a1..9bade09 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -51,8 +51,8 @@ jobs:
- label: 'OpenVox 8'
openvox_version: '~> 8'
ruby_version: '3.2'
- - label: 'OpenVox 9 Preview (OpenVox 8 + Ruby 4.0)'
- openvox_version: '~> 8'
+ - label: 'OpenVox 9'
+ openvox_version: '~> 9'
ruby_version: '4.0'
env:
OPENVOX_GEM_VERSION: ${{matrix.openvox.openvox_version}}
diff --git a/README.md b/README.md
index 21cbbdb..7a98fbe 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ The following environment variables are used to configure the Vagrant environmen
| -------------------- | ------------- | ----------- |
| `IP_SUBNET` | `192.168.32` | The internal IP subnet used by Vagrant |
| `OPENVOX_VERSION` | none (use the latest) | The OpenVox agent version |
-| `OPENVOX_RELEASE` | `8` | The OpenVox major release version |
+| `OPENVOX_RELEASE` | `9` | The OpenVox major release version |
| `EL_RELEASE` | `9` | The EL release of the base box |
| `EL_OS_NAME` | `centos` | The base box OS |
| `BOX` | Depends on EL_OS_NAME | The base box name |
diff --git a/Vagrantfile b/Vagrantfile
index cb9ec3a..58e553e 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -4,7 +4,7 @@ ENV['VAGRANT_EXPERIMENTAL'] = 'typed_triggers'
ip_subnet = ENV.fetch('IP_SUBNET', '192.168.32')
openvox_version = ENV.fetch('OPENVOX_VERSION', '')
-openvox_release = openvox_version.empty? ? ENV.fetch('OPENVOX_RELEASE', '8') : openvox_version.split('.').first
+openvox_release = openvox_version.empty? ? ENV.fetch('OPENVOX_RELEASE', '9') : openvox_version.split('.').first
el_release = ENV.fetch('EL_RELEASE', '9')
el_os_name = ENV.fetch('EL_OS_NAME', 'centos')
def select_box(el_os_name, el_release)
diff --git a/data/common.yaml b/data/common.yaml
index b6d6827..0499ea5 100644
--- a/data/common.yaml
+++ b/data/common.yaml
@@ -22,4 +22,9 @@ puppetdb::puppetdb_package: 'openvoxdb'
puppetdb::master::config::terminus_package: 'openvoxdb-termini'
choria::manage_package_repo: true
+# Choria before 0.30.3 looks up `ssldir` with `puppet apply --configprint`,
+# which OpenVox 9 removed. Setting it explicitly skips that lookup.
+choria::server_config:
+ plugin.choria.ssldir: /etc/puppetlabs/puppet/ssl
+choria::broker::ssldir: /etc/puppetlabs/puppet/ssl
choria::broker::network_broker: true
diff --git a/site/role/REFERENCE.md b/site/role/REFERENCE.md
index e12fad8..37cb227 100644
--- a/site/role/REFERENCE.md
+++ b/site/role/REFERENCE.md
@@ -56,6 +56,7 @@ The following parameters are available in the `role` plan:
* [`openvox_agent`](#-role--openvox_agent)
* [`targets`](#-role--targets)
* [`server_target`](#-role--server_target)
+* [`openvox_server`](#-role--openvox_server)
* [`control_repo`](#-role--control_repo)
* [`choria_user`](#-role--choria_user)
@@ -113,6 +114,15 @@ The puppet server target
Default value: `'puppet'`
+##### `openvox_server`
+
+Data type: `Optional[String[1]]`
+
+The value of `server` in the agents' `puppet.conf`. Defaults to the FQDN of
+`server_target`. (OpenVox 9 no longer defaults `server` to `puppet`.)
+
+Default value: `undef`
+
##### `control_repo`
Data type:
diff --git a/site/role/plans/init.pp b/site/role/plans/init.pp
index 7debf4c..3e726ab 100644
--- a/site/role/plans/init.pp
+++ b/site/role/plans/init.pp
@@ -7,6 +7,9 @@
# @param openvox_agent The name of the openvox-agent package
# @param targets The targets to run on
# @param server_target The puppet server target
+# @param openvox_server
+# The value of `server` in the agents' `puppet.conf`. Defaults to the FQDN of
+# `server_target`. (OpenVox 9 no longer defaults `server` to `puppet`.)
# @param control_repo URL of the control repo
# @param choria_user User name of the demo choria user on the Puppet server
plan role (
@@ -17,6 +20,7 @@
String[1] $openvox_agent = 'openvox-agent',
TargetSpec $targets = 'all',
TargetSpec $server_target = 'puppet',
+ Optional[String[1]] $openvox_server = undef,
Variant[
Stdlib::HTTPUrl,
Pattern[/\Afile:\/\/\/([^\n\/\0]+(\/)?)+\z/]
@@ -43,6 +47,21 @@
# installed and collect facts.
apply_prep($targets)
+ # OpenVox 9 no longer falls back to `puppet` when `server` is unset,
+ # so set it explicitly on every target.
+ $server = $openvox_server ? {
+ undef => get_targets($server_target)[0].facts['networking']['fqdn'],
+ default => $openvox_server,
+ }
+ run_command(
+ "puppet config set server ${server} --section main",
+ $targets,
+ "Setting server to ${server}",
+ '_env_vars' => {
+ 'PATH' => '/opt/puppetlabs/bin:/bin:/usr/bin',
+ },
+ )
+
# Use the collected facts to build a hash of `host` resources.
$hosts = get_targets($targets).reduce({}) |$memo, $target| {
$this_host = {
diff --git a/spec/puppet/sample_spec.rb b/spec/puppet/sample_spec.rb
index 0b2b33f..fa20f47 100644
--- a/spec/puppet/sample_spec.rb
+++ b/spec/puppet/sample_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
openvox_version = ENV.fetch('OPENVOX_VERSION', '')
-openvox_release = openvox_version.empty? ? ENV.fetch('OPENVOX_RELEASE', '8') : openvox_version.split('.').first
+openvox_release = openvox_version.empty? ? ENV.fetch('OPENVOX_RELEASE', '9') : openvox_version.split('.').first
describe 'server' do
# Verify the physical setup of the server