diff --git a/REFERENCE.md b/REFERENCE.md
index cba52e43..63410025 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -544,6 +544,7 @@ The following parameters are available in the `icingaweb2::globals` class:
* [`package_name`](#-icingaweb2--globals--package_name)
* [`conf_dir`](#-icingaweb2--globals--conf_dir)
+* [`state_dir`](#-icingaweb2--globals--state_dir)
* [`data_dir`](#-icingaweb2--globals--data_dir)
* [`role_replace`](#-icingaweb2--globals--role_replace)
* [`comp_db_schema_dir`](#-icingaweb2--globals--comp_db_schema_dir)
@@ -575,6 +576,12 @@ Data type: `Stdlib::Absolutepath`
Path to the config files.
+##### `state_dir`
+
+Data type: `Stdlib::Absolutepath`
+
+Path to variable application data.
+
##### `data_dir`
Data type: `Stdlib::Absolutepath`
diff --git a/data/FreeBSD.yaml b/data/FreeBSD.yaml
index 78f0bd5e..7c8d2dd1 100644
--- a/data/FreeBSD.yaml
+++ b/data/FreeBSD.yaml
@@ -1,6 +1,7 @@
---
icingaweb2::globals::package_name: icingaweb2-php74
icingaweb2::globals::conf_dir: /usr/local/etc/icingaweb2
+icingaweb2::globals::state_dir: /usr/local/var/icingaweb2
icingaweb2::globals::data_dir: /usr/local/www/icingaweb2
icingaweb2::globals::comp_db_schema_dir: /usr/local/www/icingaweb2/etc
icingaweb2::globals::mysql_db_schema: /usr/local/www/icingaweb2/etc/schema/mysql.schema.sql
diff --git a/data/Linux-kernel.yaml b/data/Linux-kernel.yaml
index d99ae378..78a0c00f 100644
--- a/data/Linux-kernel.yaml
+++ b/data/Linux-kernel.yaml
@@ -1,6 +1,7 @@
---
icingaweb2::globals::package_name: icingaweb2
icingaweb2::globals::conf_dir: /etc/icingaweb2
+icingaweb2::globals::state_dir: /var/lib/icingaweb2
icingaweb2::globals::data_dir: /usr/share/icingaweb2
icingaweb2::globals::comp_db_schema_dir: /usr/share/doc/icingaweb2
icingaweb2::globals::mysql_db_schema: /usr/share/doc/icingaweb2/schema/mysql.schema.sql
diff --git a/manifests/config.pp b/manifests/config.pp
index 27d39417..c865eee4 100644
--- a/manifests/config.pp
+++ b/manifests/config.pp
@@ -6,12 +6,9 @@
class icingaweb2::config {
$conf_dir = $icingaweb2::globals::conf_dir
$default_module_path = $icingaweb2::globals::default_module_path
- $conf_user = $icingaweb2::conf_user
- $conf_group = $icingaweb2::conf_group
$logging = $icingaweb2::logging
$logging_file = $icingaweb2::logging_file
- $logging_dir = dirname($icingaweb2::logging_file)
$logging_level = $icingaweb2::logging_level
$logging_facility = $icingaweb2::logging_facility
$logging_application = $icingaweb2::logging_application
@@ -61,12 +58,6 @@
cipher => $icingaweb2::tls_cipher,
}
- File {
- mode => '0660',
- owner => $conf_user,
- group => $conf_group,
- }
-
Exec {
path => $facts['path'],
provider => shell,
@@ -74,16 +65,6 @@
require => Icingaweb2::Tls::Client['icingaweb2 tls client config'],
}
- file { $logging_dir:
- ensure => directory,
- mode => '0750',
- }
-
- file { $logging_file:
- ensure => file,
- mode => '0640',
- }
-
icingaweb2::inisection { 'config-logging':
section_name => 'logging',
target => "${conf_dir}/config.ini",
@@ -137,16 +118,6 @@
}
}
- file { "${conf_dir}/modules":
- ensure => directory,
- mode => '2770',
- }
-
- file { "${conf_dir}/enabledModules":
- ensure => directory,
- mode => '2770',
- }
-
# Additional resources
$resources.each |String $res, Hash $cfg| {
case $cfg['type'] {
diff --git a/manifests/globals.pp b/manifests/globals.pp
index f6ee81ea..d131b6ed 100644
--- a/manifests/globals.pp
+++ b/manifests/globals.pp
@@ -9,6 +9,9 @@
# @param conf_dir
# Path to the config files.
#
+# @param state_dir
+# Path to variable application data.
+#
# @param data_dir
# Location of PHP data files.
#
@@ -66,6 +69,7 @@
class icingaweb2::globals (
String $package_name,
Stdlib::Absolutepath $conf_dir,
+ Stdlib::Absolutepath $state_dir,
Stdlib::Absolutepath $data_dir,
Boolean $role_replace,
Stdlib::Absolutepath $comp_db_schema_dir,
diff --git a/manifests/install.pp b/manifests/install.pp
index 68ab535f..ea362b44 100644
--- a/manifests/install.pp
+++ b/manifests/install.pp
@@ -7,20 +7,17 @@
assert_private("You're not supposed to use this defined type manually.")
$conf_dir = $icingaweb2::globals::conf_dir
+ $state_dir = $icingaweb2::globals::state_dir
$package_name = $icingaweb2::globals::package_name
+ $data_dir = $icingaweb2::globals::data_dir
+ $comp_dir = $icingaweb2::globals::comp_db_schema_dir
$manage_package = $icingaweb2::manage_package
$extra_packages = $icingaweb2::extra_packages
- $conf_user = $icingaweb2::conf_user
$conf_group = $icingaweb2::conf_group
- $data_dir = $icingaweb2::globals::data_dir
- $comp_dir = $icingaweb2::globals::comp_db_schema_dir
-
- File {
- mode => '0660',
- owner => $conf_user,
- group => $conf_group,
- }
+ #
+ # Packages
+ #
if $manage_package {
package { $package_name:
ensure => installed,
@@ -36,11 +33,26 @@
}
}
- file { prefix(['navigation', 'preferences', 'dashboards'], "${conf_dir}/"):
- ensure => directory,
- mode => '2770',
+ #
+ # Additional filesystem structure
+ #
+ file {
+ default:
+ ensure => directory,
+ owner => root,
+ group => $conf_group,
+ ;
+ prefix(['modules', 'enabledModules', 'navigation', 'preferences', 'dashboards'], "${conf_dir}/"):
+ mode => '2770',
+ ;
+ "${state_dir}/certs":
+ mode => '2770',
+ ;
}
+ #
+ # Compatmode: db schema files were moved in Icinga Web 2.11.0
+ #
file { $comp_dir:
ensure => directory,
owner => 'root',
diff --git a/spec/classes/config_spec.rb b/spec/classes/config_spec.rb
index 8087308c..c54b1b9a 100644
--- a/spec/classes/config_spec.rb
+++ b/spec/classes/config_spec.rb
@@ -19,16 +19,6 @@
}
it { is_expected.to contain_icingaweb2__inisection('config-themes') }
it { is_expected.not_to contain_icingaweb2__inisection('config-cookie') }
- it {
- is_expected.to contain_file('/var/log/icingaweb2')
- .with_ensure('directory')
- .with_mode('0750')
- }
- it {
- is_expected.to contain_file('/var/log/icingaweb2/icingaweb2.log')
- .with_ensure('file')
- .with_mode('0640')
- }
it { is_expected.to contain_icingaweb2__resource__database('mysql-icingaweb2') }
it { is_expected.not_to contain_exec('import schema') }