Skip to content

Commit 899bb08

Browse files
ekohlmmoll
authored andcommitted
Fixes #25839 - Determine puppetserver version in server.pp
Currently we store some parameters in the installers answers file that relate to the puppetserver version. This is because we determine them in params.pp which means init.pp has them. The result is that when a user upgrades, their answers need to be reset. Katello has a hook to always do this, Foreman has nothing. By defaulting to undef and moving the the determination into server.pp we can avoid this whole problem.
1 parent ac2fdb0 commit 899bb08

File tree

4 files changed

+49
-39
lines changed

4 files changed

+49
-39
lines changed

manifests/init.pp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@
371371
#
372372
# $server_puppetserver_dir:: The path of the puppetserver config dir
373373
#
374-
# $server_puppetserver_version:: The version of puppetserver 2 installed (or being installed)
374+
# $server_puppetserver_version:: The version of puppetserver installed (or being installed)
375375
# Unfortunately, different versions of puppetserver need
376376
# configuring differently. The default is derived from the
377377
# installed puppet version. Generally it's not needed to
@@ -617,7 +617,7 @@
617617
Optional[Stdlib::Absolutepath] $server_puppetserver_vardir = $puppet::params::server_puppetserver_vardir,
618618
Optional[Stdlib::Absolutepath] $server_puppetserver_rundir = $puppet::params::server_puppetserver_rundir,
619619
Optional[Stdlib::Absolutepath] $server_puppetserver_logdir = $puppet::params::server_puppetserver_logdir,
620-
Pattern[/^[\d]\.[\d]+\.[\d]+$/] $server_puppetserver_version = $puppet::params::server_puppetserver_version,
620+
Optional[Pattern[/^[\d]\.[\d]+\.[\d]+$/]] $server_puppetserver_version = $puppet::params::server_puppetserver_version,
621621
Variant[Undef, String[0], Stdlib::Absolutepath] $server_external_nodes = $puppet::params::server_external_nodes,
622622
Array[String] $server_cipher_suites = $puppet::params::server_cipher_suites,
623623
Optional[String] $server_config_version = $puppet::params::server_config_version,
@@ -671,7 +671,7 @@
671671
String $server_jvm_config = $puppet::params::server_jvm_config,
672672
Pattern[/^[0-9]+[kKmMgG]$/] $server_jvm_min_heap_size = $puppet::params::server_jvm_min_heap_size,
673673
Pattern[/^[0-9]+[kKmMgG]$/] $server_jvm_max_heap_size = $puppet::params::server_jvm_max_heap_size,
674-
Variant[String,Array[String]] $server_jvm_extra_args = $puppet::params::server_jvm_extra_args,
674+
Optional[Variant[String,Array[String]]] $server_jvm_extra_args = $puppet::params::server_jvm_extra_args,
675675
Optional[String] $server_jvm_cli_args = $puppet::params::server_jvm_cli_args,
676676
Optional[Stdlib::Absolutepath] $server_jruby_gem_home = $puppet::params::server_jruby_gem_home,
677677
Integer[1] $server_max_active_instances = $puppet::params::server_max_active_instances,
@@ -684,7 +684,7 @@
684684
Boolean $server_allow_header_cert_info = $puppet::params::server_allow_header_cert_info,
685685
Integer[0] $server_web_idle_timeout = $puppet::params::server_web_idle_timeout,
686686
Boolean $server_puppetserver_jruby9k = $puppet::params::server_puppetserver_jruby9k,
687-
Boolean $server_puppetserver_metrics = $puppet::params::server_puppetserver_metrics,
687+
Optional[Boolean] $server_puppetserver_metrics = $puppet::params::server_puppetserver_metrics,
688688
Boolean $server_metrics_jmx_enable = $::puppet::params::server_metrics_jmx_enable,
689689
Boolean $server_metrics_graphite_enable = $::puppet::params::server_metrics_graphite_enable,
690690
String $server_metrics_graphite_host = $::puppet::params::server_metrics_graphite_host,

manifests/params.pp

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -363,15 +363,9 @@
363363
default => '/etc/default/puppetserver',
364364
}
365365

366-
$server_jvm_java_bin = '/usr/bin/java'
367-
368-
if versioncmp($::puppetversion, '5.0.0') < 0 {
369-
$server_jvm_extra_args = '-XX:MaxPermSize=256m'
370-
} else {
371-
$server_jvm_extra_args = '-Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger'
372-
}
373-
374-
$server_jvm_cli_args = undef
366+
$server_jvm_java_bin = '/usr/bin/java'
367+
$server_jvm_extra_args = undef
368+
$server_jvm_cli_args = undef
375369

376370
# This is some very trivial "tuning". See the puppet reference:
377371
# https://docs.puppet.com/puppetserver/latest/tuning_guide.html
@@ -419,29 +413,16 @@
419413
$server_ca_allow_auth_extensions = false
420414
$server_ca_enable_infra_crl = false
421415

416+
$server_puppetserver_version = undef
417+
422418
# Puppetserver >= 2.2 Which auth.conf shall we use?
423419
$server_use_legacy_auth_conf = false
424420

425-
# For Puppetserver, certain configuration parameters are version specific. We assume a particular version here.
426-
if versioncmp($::puppetversion, '6.0.0') >= 0 {
427-
$server_puppetserver_version = '6.0.0'
428-
} elsif versioncmp($::puppetversion, '5.5.7') >= 0 {
429-
$server_puppetserver_version = '5.3.6'
430-
} elsif versioncmp($::puppetversion, '5.5.0') >= 0 {
431-
$server_puppetserver_version = '5.3.0'
432-
} elsif versioncmp($::puppetversion, '5.1.0') >= 0 {
433-
$server_puppetserver_version = '5.1.0'
434-
} elsif versioncmp($::puppetversion, '5.0.0') >= 0 {
435-
$server_puppetserver_version = '5.0.0'
436-
} else {
437-
$server_puppetserver_version = '2.7.0'
438-
}
439-
440421
# For Puppetserver 5, use JRuby 9k?
441422
$server_puppetserver_jruby9k = false
442423

443424
# this switch also controls Ruby profiling, by default disabled for Puppetserver 2.x, enabled for 5.x
444-
$server_puppetserver_metrics = versioncmp($::puppetversion, '5.0.0') >= 0
425+
$server_puppetserver_metrics = undef
445426

446427
# Puppetserver metrics shipping
447428
$server_metrics_jmx_enable = true

manifests/server.pp

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,10 @@
201201
#
202202
# $puppetserver_dir:: The path of the puppetserver config dir
203203
#
204-
# $puppetserver_version:: The version of puppetserver 2 installed (or being installed)
205-
# Unfortunately, different versions of puppetserver need configuring differently,
206-
# and there's no easy way of determining which version is being installed.
207-
# Defaults to '2.3.1' but can be overriden if you're installing an older version.
204+
# $puppetserver_version:: The version of puppetserver installed (or being installed)
205+
# Unfortunately, different versions of puppetserver need configuring differently.
206+
# By default we attempt to derive the version from the puppet version itself but
207+
# can be overriden if you're installing an older version.
208208
#
209209
# $max_active_instances:: Max number of active jruby instances. Defaults to
210210
# processor count
@@ -356,7 +356,7 @@
356356
Optional[Stdlib::Absolutepath] $puppetserver_rundir = $::puppet::server_puppetserver_rundir,
357357
Optional[Stdlib::Absolutepath] $puppetserver_logdir = $::puppet::server_puppetserver_logdir,
358358
Stdlib::Absolutepath $puppetserver_dir = $::puppet::server_puppetserver_dir,
359-
Pattern[/^[\d]\.[\d]+\.[\d]+$/] $puppetserver_version = $::puppet::server_puppetserver_version,
359+
Optional[Pattern[/^[\d]\.[\d]+\.[\d]+$/]] $puppetserver_version = $::puppet::server_puppetserver_version,
360360
Variant[Undef, String[0], Stdlib::Absolutepath] $external_nodes = $::puppet::server_external_nodes,
361361
Array[String] $cipher_suites = $::puppet::server_cipher_suites,
362362
Optional[String] $config_version = $::puppet::server_config_version,
@@ -411,7 +411,7 @@
411411
String $jvm_config = $::puppet::server_jvm_config,
412412
Pattern[/^[0-9]+[kKmMgG]$/] $jvm_min_heap_size = $::puppet::server_jvm_min_heap_size,
413413
Pattern[/^[0-9]+[kKmMgG]$/] $jvm_max_heap_size = $::puppet::server_jvm_max_heap_size,
414-
Variant[String,Array[String]] $jvm_extra_args = $::puppet::server_jvm_extra_args,
414+
Optional[Variant[String,Array[String]]] $jvm_extra_args = $::puppet::server_jvm_extra_args,
415415
Optional[String] $jvm_cli_args = $::puppet::server_jvm_cli_args,
416416
Optional[Stdlib::Absolutepath] $jruby_gem_home = $::puppet::server_jruby_gem_home,
417417
Integer[1] $max_active_instances = $::puppet::server_max_active_instances,
@@ -423,7 +423,7 @@
423423
Boolean $environment_class_cache_enabled = $::puppet::server_environment_class_cache_enabled,
424424
Boolean $allow_header_cert_info = $::puppet::server_allow_header_cert_info,
425425
Boolean $puppetserver_jruby9k = $::puppet::server_puppetserver_jruby9k,
426-
Boolean $puppetserver_metrics = $::puppet::server_puppetserver_metrics,
426+
Optional[Boolean] $puppetserver_metrics = $::puppet::server_puppetserver_metrics,
427427
Boolean $metrics_jmx_enable = $::puppet::server_metrics_jmx_enable,
428428
Boolean $metrics_graphite_enable = $::puppet::server_metrics_graphite_enable,
429429
String $metrics_graphite_host = $::puppet::server_metrics_graphite_host,
@@ -468,6 +468,35 @@
468468
$config_version_cmd = $config_version
469469
}
470470

471+
# For Puppetserver, certain configuration parameters are version specific. We
472+
# assume a particular version here.
473+
if $puppetserver_version {
474+
$real_puppetserver_version = $puppetserver_version
475+
} elsif versioncmp($::puppetversion, '6.0.0') >= 0 {
476+
$real_puppetserver_version = '6.0.0'
477+
} elsif versioncmp($::puppetversion, '5.5.7') >= 0 {
478+
$real_puppetserver_version = '5.3.6'
479+
} elsif versioncmp($::puppetversion, '5.5.0') >= 0 {
480+
$real_puppetserver_version = '5.3.0'
481+
} elsif versioncmp($::puppetversion, '5.1.0') >= 0 {
482+
$real_puppetserver_version = '5.1.0'
483+
} elsif versioncmp($::puppetversion, '5.0.0') >= 0 {
484+
$real_puppetserver_version = '5.0.0'
485+
} else {
486+
$real_puppetserver_version = '2.7.0'
487+
}
488+
489+
# Prefer the user setting,otherwise disable for Puppetserver 2.x, enabled for 5.x
490+
$real_puppetserver_metrics = pick($puppetserver_metrics, versioncmp($real_puppetserver_version, '5.0.0') >= 0)
491+
492+
if $jvm_extra_args {
493+
$real_jvm_extra_args = $jvm_extra_args
494+
} elsif versioncmp($real_puppetserver_version, '5.0.0') < 0 {
495+
$real_jvm_extra_args = '-XX:MaxPermSize=256m'
496+
} else {
497+
$real_jvm_extra_args = '-Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger'
498+
}
499+
471500
contain puppet::server::install
472501
contain puppet::server::config
473502
contain puppet::server::service

manifests/server/puppetserver.pp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
class puppet::server::puppetserver (
6767
$config = $::puppet::server::jvm_config,
6868
$java_bin = $::puppet::server::jvm_java_bin,
69-
$jvm_extra_args = $::puppet::server::jvm_extra_args,
69+
$jvm_extra_args = $::puppet::server::real_jvm_extra_args,
7070
$jvm_cli_args = $::puppet::server::jvm_cli_args,
7171
$jvm_min_heap_size = $::puppet::server::jvm_min_heap_size,
7272
$jvm_max_heap_size = $::puppet::server::jvm_max_heap_size,
@@ -101,12 +101,12 @@
101101
$server_ca_auth_required = $::puppet::server::ca_auth_required,
102102
$server_ca_client_whitelist = $::puppet::server::ca_client_whitelist,
103103
$server_admin_api_whitelist = $::puppet::server::admin_api_whitelist,
104-
$server_puppetserver_version = $::puppet::server::puppetserver_version,
104+
$server_puppetserver_version = $::puppet::server::real_puppetserver_version,
105105
$server_use_legacy_auth_conf = $::puppet::server::use_legacy_auth_conf,
106106
$server_check_for_updates = $::puppet::server::check_for_updates,
107107
$server_environment_class_cache_enabled = $::puppet::server::environment_class_cache_enabled,
108108
$server_jruby9k = $::puppet::server::puppetserver_jruby9k,
109-
$server_metrics = $::puppet::server::puppetserver_metrics,
109+
$server_metrics = $::puppet::server::real_puppetserver_metrics,
110110
$metrics_jmx_enable = $::puppet::server::metrics_jmx_enable,
111111
$metrics_graphite_enable = $::puppet::server::metrics_graphite_enable,
112112
$metrics_graphite_host = $::puppet::server::metrics_graphite_host,

0 commit comments

Comments
 (0)