2015-02-20 10:40:45 +01:00
|
|
|
# == Class icingaweb2
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $admin_permissions::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $admin_users::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $auth_backend::
|
|
|
|
# Default:
|
|
|
|
#
|
2016-05-11 11:57:59 +02:00
|
|
|
# $auth_ldap_base_dn:: LDAP base dn.
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $auth_ldap_filter:: LDAP authentication filter.
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $auth_ldap_user_class:: LDAP authentication user class.
|
|
|
|
# Default: inetOrgPerson
|
|
|
|
#
|
|
|
|
# $auth_ldap_user_name_attribute:: LDAP authentication user name attribute.
|
|
|
|
# Default: uid
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $auth_resource::
|
|
|
|
# Default:
|
|
|
|
#
|
2015-02-20 10:40:45 +01:00
|
|
|
# $config_dir:: Location of the main configuration directory.
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $config_dir_mode:: Posix file mode for configuration directories.
|
|
|
|
# Default: 0755.
|
|
|
|
#
|
2015-09-17 16:20:19 +02:00
|
|
|
# $config_dir_purge:: The $config_dir is purge at each puppet run.
|
|
|
|
# Unmanaged puppet file will be lost
|
|
|
|
# Default: false.
|
|
|
|
#
|
2015-02-20 10:40:45 +01:00
|
|
|
# $config_dir_recurse:: Apply the same posix permissions as $config_dir to any
|
|
|
|
# directory contained in $config_dir.
|
|
|
|
# Default: false.
|
|
|
|
#
|
|
|
|
# $config_file_mode:: Posix file mode for configuration files.
|
|
|
|
# Default: 0644.
|
|
|
|
#
|
|
|
|
# $config_group:: Posix group for configuration files.
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $config_user:: Posix user for configuration files.
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $git_repo:: Source repository containing upstream IcingaWeb2.
|
|
|
|
# Default: 'https://git.icinga.org/icingaWeb2.git'
|
|
|
|
#
|
|
|
|
# $git_revision:: Allows git revisions, tags, hashes, ... to be
|
|
|
|
# specified.
|
|
|
|
# Default: undef.
|
|
|
|
#
|
|
|
|
# $ido_db::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_db_host::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_db_name::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_db_pass::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_db_port::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_db_user::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $ido_type::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $install_method:: Defines how to install install IcingaWeb2.
|
|
|
|
# Options: git, package
|
|
|
|
# Default: git.
|
|
|
|
#
|
2016-05-11 11:57:59 +02:00
|
|
|
# $ldap_bind_dn:: LDAP bind dn
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $ldap_bind_pw:: LDAP bind pw
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $ldap_encryption:: LDAP encryption method
|
|
|
|
# Allowed values are "starttls" and "ldaps".
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $ldap_host:: LDAP hostname
|
|
|
|
# Default: undef
|
|
|
|
#
|
|
|
|
# $ldap_port:: LDAP bind port
|
|
|
|
# Default: 389
|
|
|
|
#
|
|
|
|
# $ldap_root_dn:: LDAP root dn
|
|
|
|
# Default: undef
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $log_application::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $log_level::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $log_method::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $log_resource::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $log_store::
|
|
|
|
# Default:
|
|
|
|
#
|
2015-04-07 14:01:04 +02:00
|
|
|
# $manage_apache_vhost:: Define wether or not this module should manage
|
2015-02-20 22:22:45 +01:00
|
|
|
# the virtualhost using Puppetlabs' apache module.
|
|
|
|
# Default: false.
|
|
|
|
#
|
2015-02-20 10:40:45 +01:00
|
|
|
# $manage_repo:: Add a custom package repository.
|
|
|
|
# Default: false.
|
|
|
|
#
|
2016-01-27 13:47:32 +01:00
|
|
|
# $manage_user:: Defines if user and group should be managed
|
|
|
|
# by this module. Set to false if you don't want
|
|
|
|
# user and group to be managed by this module.
|
|
|
|
# Default: true.
|
|
|
|
#
|
2015-02-20 10:40:45 +01:00
|
|
|
# $pkg_deps:: Any dependencies that need to be resolved before
|
|
|
|
# installing the main package.
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_ensure:: Ensure state for packages.
|
|
|
|
# Default: present.
|
|
|
|
#
|
|
|
|
# $pkg_list:: An array containing the main package and possibly
|
|
|
|
# a number of dependencies.
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
2015-04-07 14:01:04 +02:00
|
|
|
# $pkg_repo_version::
|
2015-02-23 16:36:17 +01:00
|
|
|
# Options: release, snapshot.
|
|
|
|
# Default: release.
|
|
|
|
#
|
|
|
|
# $pkg_repo_release_key::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_repo_release_metadata_expire::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_repo_release_url::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_repo_snapshot_key::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_repo_snapshot_metadata_expire::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
|
|
|
# $pkg_repo_snapshot_url::
|
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
2015-03-16 12:47:55 +01:00
|
|
|
# $template_auth::
|
|
|
|
# Default: icingaweb2/authentication.ini.erb
|
|
|
|
#
|
|
|
|
# $template_config::
|
|
|
|
# Default: icingaweb2/config.ini.erb
|
|
|
|
#
|
|
|
|
# $template_resources::
|
|
|
|
# Default: icingaweb2/resources.ini.erb
|
|
|
|
#
|
|
|
|
# $template_roles::
|
|
|
|
# Default: icingaweb2/roles.ini.erb
|
|
|
|
#
|
|
|
|
# $template_apache::
|
|
|
|
# Default: icingaweb2/apache2.ini.erb
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $web_db::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_host::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_name::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_pass::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_port::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_prefix::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_db_user::
|
|
|
|
# Default:
|
|
|
|
#
|
|
|
|
# $web_root:: Default location for when using using git.
|
2015-02-20 10:40:45 +01:00
|
|
|
# Default: operating system specific.
|
|
|
|
#
|
2015-02-20 22:22:45 +01:00
|
|
|
# $web_type::
|
|
|
|
# Default:
|
|
|
|
#
|
2015-12-14 16:40:11 +01:00
|
|
|
# $initialize:: Whether or not to initialize a db scheme and a user
|
|
|
|
# Default : false
|
2015-02-20 10:40:45 +01:00
|
|
|
class icingaweb2 (
|
2015-02-23 16:36:17 +01:00
|
|
|
$admin_permissions = $::icingaweb2::params::admin_permissions,
|
|
|
|
$admin_users = $::icingaweb2::params::admin_users,
|
|
|
|
$auth_backend = $::icingaweb2::params::auth_backend,
|
2016-05-11 11:57:59 +02:00
|
|
|
$auth_ldap_base_dn = $::icingaweb2::params::auth_base_dn,
|
|
|
|
$auth_ldap_filter = $::icingaweb2::params::auth_ldap_filter,
|
|
|
|
$auth_ldap_user_class = $::icingaweb2::params::auth_ldap_user_class,
|
|
|
|
$auth_ldap_user_name_attribute = $::icingaweb2::params::auth_ldap_user_name_attribute,
|
2015-02-23 16:36:17 +01:00
|
|
|
$auth_resource = $::icingaweb2::params::auth_resource,
|
|
|
|
$config_dir = $::icingaweb2::params::config_dir,
|
|
|
|
$config_dir_mode = $::icingaweb2::params::config_dir_mode,
|
2015-09-17 16:20:19 +02:00
|
|
|
$config_dir_purge = $::icingaweb2::params::config_dir_purge,
|
2015-02-23 16:36:17 +01:00
|
|
|
$config_dir_recurse = $::icingaweb2::params::config_dir_recurse,
|
|
|
|
$config_file_mode = $::icingaweb2::params::config_file_mode,
|
|
|
|
$config_group = $::icingaweb2::params::config_group,
|
|
|
|
$config_user = $::icingaweb2::params::config_user,
|
|
|
|
$git_repo = $::icingaweb2::params::git_repo,
|
|
|
|
$git_revision = $::icingaweb2::params::git_revision,
|
|
|
|
$ido_db = $::icingaweb2::params::ido_db,
|
|
|
|
$ido_db_host = $::icingaweb2::params::ido_db_host,
|
|
|
|
$ido_db_name = $::icingaweb2::params::ido_db_name,
|
|
|
|
$ido_db_pass = $::icingaweb2::params::ido_db_pass,
|
|
|
|
$ido_db_port = $::icingaweb2::params::ido_db_port,
|
|
|
|
$ido_db_user = $::icingaweb2::params::ido_db_user,
|
|
|
|
$ido_type = $::icingaweb2::params::ido_type,
|
|
|
|
$install_method = $::icingaweb2::params::install_method,
|
2016-05-11 11:57:59 +02:00
|
|
|
$ldap_bind_dn = $::icingaweb2::params::ldap_bind_dn,
|
|
|
|
$ldap_bind_pw = $::icingaweb2::params::ldap_bind_pw,
|
|
|
|
$ldap_encryption = $::icingaweb2::params::ldap_encryption,
|
|
|
|
$ldap_host = $::icingaweb2::params::ldap_host,
|
|
|
|
$ldap_port = $::icingaweb2::params::ldap_port,
|
|
|
|
$ldap_root_dn = $::icingaweb2::params::ldap_root_dn,
|
2015-02-23 16:36:17 +01:00
|
|
|
$log_application = $::icingaweb2::params::log_application,
|
|
|
|
$log_level = $::icingaweb2::params::log_level,
|
|
|
|
$log_method = $::icingaweb2::params::log_method,
|
|
|
|
$log_resource = $::icingaweb2::params::log_resource,
|
|
|
|
$log_store = $::icingaweb2::params::log_store,
|
|
|
|
$manage_apache_vhost = $::icingaweb2::params::manage_apache_vhost,
|
|
|
|
$manage_repo = $::icingaweb2::params::manage_repo,
|
2016-01-27 13:47:32 +01:00
|
|
|
$manage_user = $::icingaweb2::params::manage_user,
|
2015-02-23 16:36:17 +01:00
|
|
|
$pkg_deps = $::icingaweb2::params::pkg_deps,
|
|
|
|
$pkg_ensure = $::icingaweb2::params::pkg_ensure,
|
|
|
|
$pkg_list = $::icingaweb2::params::pkg_list,
|
|
|
|
$pkg_repo_release_key = $::icingaweb2::params::pkg_repo_release_key,
|
|
|
|
$pkg_repo_release_metadata_expire = $::icingaweb2::params::pkg_repo_release_metadata_expire,
|
|
|
|
$pkg_repo_release_url = $::icingaweb2::params::pkg_repo_release_url,
|
|
|
|
$pkg_repo_snapshot_key = $::icingaweb2::params::pkg_repo_snapshot_key,
|
|
|
|
$pkg_repo_snapshot_metadata_expire = $::icingaweb2::params::pkg_repo_snapshot_metadata_expire,
|
|
|
|
$pkg_repo_snapshot_url = $::icingaweb2::params::pkg_repo_snapshot_url,
|
|
|
|
$pkg_repo_version = $::icingaweb2::params::pkg_repo_version,
|
2015-03-16 12:47:55 +01:00
|
|
|
$template_auth = $::icingaweb2::params::template_auth,
|
|
|
|
$template_config = $::icingaweb2::params::template_config,
|
|
|
|
$template_resources = $::icingaweb2::params::template_resources,
|
|
|
|
$template_roles = $::icingaweb2::params::template_roles,
|
2015-03-16 17:35:55 +01:00
|
|
|
$template_apache = $::icingaweb2::params::template_apache,
|
2015-02-23 16:36:17 +01:00
|
|
|
$web_db = $::icingaweb2::params::web_db,
|
|
|
|
$web_db_host = $::icingaweb2::params::web_db_host,
|
|
|
|
$web_db_name = $::icingaweb2::params::web_db_name,
|
|
|
|
$web_db_pass = $::icingaweb2::params::web_db_pass,
|
|
|
|
$web_db_port = $::icingaweb2::params::web_db_port,
|
|
|
|
$web_db_prefix = $::icingaweb2::params::web_db_prefix,
|
|
|
|
$web_db_user = $::icingaweb2::params::web_db_user,
|
|
|
|
$web_root = $::icingaweb2::params::web_root,
|
|
|
|
$web_type = $::icingaweb2::params::web_type,
|
2015-12-14 16:40:11 +01:00
|
|
|
$initialize = $::icingaweb2::params::initialize,
|
2015-06-10 12:19:02 +02:00
|
|
|
) inherits ::icingaweb2::params {
|
|
|
|
class { '::icingaweb2::preinstall': } ->
|
|
|
|
class { '::icingaweb2::install': } ->
|
|
|
|
class { '::icingaweb2::config': } ->
|
2015-12-14 16:40:11 +01:00
|
|
|
class { '::icingaweb2::initialize': } ->
|
2015-06-10 12:19:02 +02:00
|
|
|
Class['::icingaweb2']
|
2015-02-20 10:40:45 +01:00
|
|
|
|
|
|
|
validate_absolute_path($config_dir)
|
|
|
|
validate_absolute_path($web_root)
|
|
|
|
validate_array($pkg_deps)
|
|
|
|
validate_array($pkg_list)
|
|
|
|
validate_bool($config_dir_recurse)
|
|
|
|
validate_bool($manage_repo)
|
2016-01-27 13:47:32 +01:00
|
|
|
validate_bool($manage_user)
|
2015-12-14 16:40:11 +01:00
|
|
|
validate_bool($initialize)
|
2015-02-20 10:40:45 +01:00
|
|
|
validate_slength($config_dir_mode, 4)
|
|
|
|
validate_slength($config_file_mode, 4)
|
2015-02-20 22:22:45 +01:00
|
|
|
validate_string($admin_permissions)
|
|
|
|
validate_string($admin_users)
|
|
|
|
validate_string($auth_backend)
|
|
|
|
validate_string($auth_resource)
|
2015-02-20 10:40:45 +01:00
|
|
|
validate_string($config_dir_mode)
|
|
|
|
validate_string($config_file_mode)
|
|
|
|
validate_string($config_group)
|
|
|
|
validate_string($config_user)
|
2015-02-20 22:22:45 +01:00
|
|
|
validate_string($log_application)
|
|
|
|
validate_string($log_level)
|
|
|
|
validate_string($log_method)
|
|
|
|
validate_string($log_resource)
|
|
|
|
validate_string($log_store)
|
2015-02-20 10:40:45 +01:00
|
|
|
validate_string($pkg_ensure)
|
2015-02-23 16:36:17 +01:00
|
|
|
validate_string($pkg_repo_release_key)
|
|
|
|
validate_string($pkg_repo_release_url)
|
|
|
|
validate_string($pkg_repo_snapshot_key)
|
|
|
|
validate_string($pkg_repo_snapshot_url)
|
2015-03-16 12:47:55 +01:00
|
|
|
validate_string($template_auth)
|
|
|
|
validate_string($template_config)
|
|
|
|
validate_string($template_resources)
|
|
|
|
validate_string($template_roles)
|
2015-04-23 11:40:42 +02:00
|
|
|
|
2016-05-11 11:57:59 +02:00
|
|
|
if $::icingaweb2::auth_backend == 'ldap' {
|
|
|
|
validate_integer($ldap_port)
|
|
|
|
validate_string($auth_ldap_base_dn)
|
|
|
|
validate_string($auth_ldap_filter)
|
|
|
|
validate_string($auth_ldap_user_class)
|
|
|
|
validate_string($auth_ldap_user_name_attribute)
|
|
|
|
validate_string($ldap_host)
|
|
|
|
validate_string($ldap_bind_dn)
|
|
|
|
validate_string($ldap_bind_pw)
|
|
|
|
validate_string($ldap_root_dn)
|
|
|
|
if $::icingaweb2::ldap_encryption {
|
|
|
|
validate_re( $ldap_encryption, '^(ldaps|starttls)$', "\$ldap_encryption must be either 'ldaps' or 'starttls', got '${ldap_encryption}'")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-03-16 12:47:55 +01:00
|
|
|
if $::icingaweb2::manage_apache_vhost {
|
|
|
|
validate_string($template_apache)
|
|
|
|
}
|
|
|
|
|
2015-02-23 16:36:17 +01:00
|
|
|
if $pkg_repo_release_metadata_expire {
|
|
|
|
validate_string($pkg_repo_release_metadata_expire)
|
|
|
|
}
|
|
|
|
|
|
|
|
if $pkg_repo_snapshot_metadata_expire {
|
|
|
|
validate_string($pkg_repo_snapshot_metadata_expire)
|
|
|
|
}
|
2015-02-20 10:40:45 +01:00
|
|
|
|
|
|
|
validate_re($install_method,
|
|
|
|
[
|
|
|
|
'git',
|
|
|
|
'package',
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
validate_re($pkg_ensure,
|
|
|
|
[
|
|
|
|
'absent',
|
|
|
|
'latest',
|
|
|
|
'present',
|
|
|
|
'purged',
|
|
|
|
]
|
|
|
|
)
|
2015-02-23 16:36:17 +01:00
|
|
|
|
|
|
|
validate_re($pkg_repo_version,
|
|
|
|
[
|
|
|
|
'release',
|
|
|
|
'snapshot',
|
|
|
|
]
|
|
|
|
)
|
2015-02-20 10:40:45 +01:00
|
|
|
}
|
|
|
|
|