Skip to content

Commit d5ca407

Browse files
committed
feat: node_terminus variable for server
Allow to override default value of [server]/node_terminus in puppet.conf Useful in case of standalone (non-Foreman) Puppet Server installs without an ENC. Tests are updated as now without Foreman, node terminus is explicitly set to the default 'plain' value Reference https://www.puppet.com/docs/puppet/8/configuration.html#node-terminus
1 parent b4c69a6 commit d5ca407

File tree

6 files changed

+39
-5
lines changed

6 files changed

+39
-5
lines changed

manifests/init.pp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@
225225
#
226226
# $server_reports:: List of report types to include on the puppetserver
227227
#
228+
# $server_node_terminus:: Node data plugin for catalog compiling
229+
#
228230
# $server_external_nodes:: External nodes classifier executable
229231
#
230232
# $server_trusted_external_command:: The external trusted facts script to use.
@@ -665,6 +667,7 @@
665667
Optional[Stdlib::Absolutepath] $server_puppetserver_rundir = $puppet::params::server_puppetserver_rundir,
666668
Optional[Stdlib::Absolutepath] $server_puppetserver_logdir = $puppet::params::server_puppetserver_logdir,
667669
Optional[Pattern[/^[\d]\.[\d]+\.[\d]+$/]] $server_puppetserver_version = $puppet::params::server_puppetserver_version,
670+
Enum['plain', 'exec', 'classifier'] $server_node_terminus = $puppet::params::server_node_terminus,
668671
Variant[Undef, String[0], Stdlib::Absolutepath] $server_external_nodes = $puppet::params::server_external_nodes,
669672
Optional[Stdlib::Absolutepath] $server_trusted_external_command = $puppet::params::server_trusted_external_command,
670673
Array[String] $server_cipher_suites = $puppet::params::server_cipher_suites,

manifests/params.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@
221221
$server_ca = true
222222
$server_ca_crl_sync = false
223223
$server_reports = 'foreman'
224+
$server_node_terminus = 'exec'
224225
$server_external_nodes = "${dir}/node.rb"
225226
$server_trusted_external_command = undef
226227
$server_request_timeout = 60

manifests/server.pp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
#
5959
# $reports:: List of report types to include on the puppetserver
6060
#
61+
# $node_terminus:: Node data plugin for catalog compiling
62+
#
6163
# $external_nodes:: External nodes classifier executable
6264
#
6365
# $trusted_external_command:: The external trusted facts script to use.
@@ -373,6 +375,7 @@
373375
Optional[Stdlib::Absolutepath] $puppetserver_logdir = $puppet::server_puppetserver_logdir,
374376
Stdlib::Absolutepath $puppetserver_dir = $puppet::server_puppetserver_dir,
375377
Optional[Pattern[/^[\d]\.[\d]+\.[\d]+$/]] $puppetserver_version = $puppet::server_puppetserver_version,
378+
Enum['plain', 'exec', 'classifier'] $node_terminus = $puppet::server_node_terminus,
376379
Variant[Undef, String[0], Stdlib::Absolutepath] $external_nodes = $puppet::server_external_nodes,
377380
Optional[Stdlib::Absolutepath] $trusted_external_command = $puppet::server_trusted_external_command,
378381
Array[String] $cipher_suites = $puppet::server_cipher_suites,

manifests/server/config.pp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,21 @@
3333
## General configuration
3434
$ca_server = $puppet::ca_server
3535
$ca_port = $puppet::ca_port
36+
$server_node_terminus = $puppet::server::node_terminus
3637
$server_external_nodes = $puppet::server::external_nodes
3738
$server_environment_timeout = $puppet::server::environment_timeout
3839
$trusted_external_command = $puppet::server::trusted_external_command
3940
$primary_envs_dir = $puppet::server::envs_dir[0]
4041

4142
if $server_external_nodes and $server_external_nodes != '' {
4243
class { 'puppet::server::enc':
43-
enc_path => $server_external_nodes,
44+
node_terminus => $server_node_terminus,
45+
enc_path => $server_external_nodes,
46+
}
47+
}
48+
else {
49+
class { 'puppet::server::enc':
50+
node_terminus => $server_node_terminus,
4451
}
4552
}
4653

manifests/server/enc.pp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
# Set up the ENC config
22
# @api private
33
class puppet::server::enc (
4-
Variant[Undef, String[0], Stdlib::Absolutepath] $enc_path = $puppet::server::external_nodes
4+
Variant[Undef, String[0], Stdlib::Absolutepath] $enc_path = $puppet::server::external_nodes,
5+
Enum['plain', 'exec', 'classifier'] $node_terminus = $puppet::server::node_terminus,
56
) {
6-
puppet::config::server {
7-
'external_nodes': value => $enc_path;
8-
'node_terminus': value => 'exec';
7+
if $enc_path and $enc_path != '' {
8+
puppet::config::server {
9+
'external_nodes': value => $enc_path;
10+
'node_terminus': value => $node_terminus;
11+
}
12+
}
13+
else {
14+
puppet::config::server {
15+
'node_terminus': value => $node_terminus;
16+
}
917
}
1018
}

spec/classes/puppet_server_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,18 @@
297297
it { should_not contain_puppet__config__server('external_nodes') }
298298
end
299299

300+
describe 'with plain terminus' do
301+
let(:params) do
302+
super().merge(
303+
server_node_terminus: 'plain',
304+
server_external_nodes: ''
305+
)
306+
end
307+
308+
it { should contain_puppet__config__server('node_terminus').with_value('plain') }
309+
it { should_not contain_puppet__config__server('external_nodes') }
310+
end
311+
300312
describe 'with server_default_manifest => true and undef content' do
301313
let(:params) do
302314
super().merge(server_default_manifest: true)

0 commit comments

Comments
 (0)