module-puppetdb/manifests/master/config.pp
Yanis Guenane a826d85735 Allow puppetdb to be configure for masterless conf
Currently the module only allows PuppetDB to be configured in a
agent/master setup configuration, by configuring the master section of
the puppet.conf and applying on the routes for such a configuration.
This commit allows one to use this module to configure the main section of
the puppet.conf and applying the proper routes so the module can configure
nodes to use PuppetDB in a masterless setup.

Doc about puppet.conf configure in masterless way available here
https://docs.puppetlabs.com/puppetdb/2.2/connect_puppet_apply.html#manage-puppetconf
2015-02-05 06:31:54 -05:00

141 lines
4.9 KiB
Puppet

# Manage puppet configuration. See README.md for more details.
class puppetdb::master::config (
$puppetdb_server = $::fqdn,
$puppetdb_port = defined(Class['puppetdb']) ? {
true => $::puppetdb::disable_ssl ? {
true => 8080,
default => 8081,
},
default => 8081,
},
$puppetdb_disable_ssl = defined(Class['puppetdb']) ? {
true => $::puppetdb::disable_ssl,
default => false,
},
$masterless = $puppetdb::params::masterless,
$puppetdb_soft_write_failure = false,
$manage_routes = true,
$manage_storeconfigs = true,
$manage_report_processor = false,
$manage_config = true,
$strict_validation = true,
$enable_reports = false,
$puppet_confdir = $puppetdb::params::puppet_confdir,
$puppet_conf = $puppetdb::params::puppet_conf,
$puppetdb_version = $puppetdb::params::puppetdb_version,
$terminus_package = $puppetdb::params::terminus_package,
$puppet_service_name = $puppetdb::params::puppet_service_name,
$puppetdb_startup_timeout = $puppetdb::params::puppetdb_startup_timeout,
$test_url = $puppetdb::params::test_url,
$restart_puppet = true,
) inherits puppetdb::params {
package { $terminus_package:
ensure => $puppetdb_version,
}
if ($strict_validation) {
# Validate the puppetdb connection. If we can't connect to puppetdb then we
# *must* not perform the other configuration steps, or else
puppetdb_conn_validator { 'puppetdb_conn':
puppetdb_server => $manage_config ? {
true => $puppetdb_server,
default => undef,
},
puppetdb_port => $manage_config ? {
true => $puppetdb_port,
default => undef,
},
use_ssl => $puppetdb_disable_ssl ? {
true => false,
default => true,
},
timeout => $puppetdb_startup_timeout,
require => Package[$terminus_package],
test_url => $test_url,
}
# This is a bit of puppet chicanery that allows us to create a
# conditional dependency. Basically, we're saying that "if the PuppetDB
# service is being managed in this same catalog, it needs to come before
# this validator."
Service<|title == $puppetdb::params::puppetdb_service|> -> Puppetdb_conn_validator['puppetdb_conn']
}
# Conditionally manage the `routes.yaml` file. Restart the puppet service
# if changes are made.
if ($manage_routes) {
class { 'puppetdb::master::routes':
puppet_confdir => $puppet_confdir,
masterless => $masterless,
require => $strict_validation ? {
true => Puppetdb_conn_validator['puppetdb_conn'],
default => Package[$terminus_package],
},
}
}
# Conditionally manage the storeconfigs settings in `puppet.conf`. We don't
# need to trigger a restart of the puppet master service for this one, because
# it polls it automatically.
if ($manage_storeconfigs) {
class { 'puppetdb::master::storeconfigs':
puppet_conf => $puppet_conf,
masterless => $masterless,
require => $strict_validation ? {
true => Puppetdb_conn_validator['puppetdb_conn'],
default => Package[$terminus_package],
},
}
}
# Conditionally manage the puppetdb report processor setting in `puppet.conf`.
# We don't need to trigger a restart of the puppet master service for this one,
# because it polls it automatically.
if ($manage_report_processor) {
class { 'puppetdb::master::report_processor':
puppet_conf => $puppet_conf,
masterless => $masterless,
enable => $enable_reports,
require => $strict_validation ? {
true => Puppetdb_conn_validator['puppetdb_conn'],
default => Package[$terminus_package],
},
}
}
if ($manage_config) {
# Manage the `puppetdb.conf` file. Restart the puppet service if changes
# are made.
class { 'puppetdb::master::puppetdb_conf':
server => $puppetdb_server,
port => $puppetdb_port,
soft_write_failure => $puppetdb_soft_write_failure,
puppet_confdir => $puppet_confdir,
require => $strict_validation ? {
true => Puppetdb_conn_validator['puppetdb_conn'],
default => Package[$terminus_package],
},
}
}
if ($restart_puppet) {
# We will need to restart the puppet master service if certain config
# files are changed, so here we make sure it's in the catalog.
if ! defined(Service[$puppet_service_name]) {
service { $puppet_service_name:
ensure => running,
}
}
if ($manage_config) {
Class['puppetdb::master::puppetdb_conf'] ~> Service[$puppet_service_name]
}
if ($manage_routes) {
Class['puppetdb::master::routes'] ~> Service[$puppet_service_name]
}
}
}