diff --git a/.vscode/settings.json b/.vscode/settings.json index a8cccd4..16259cd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -48,6 +48,7 @@ "tablespace", "tablespaces", "tidscan", + "timescaledb", "timezonesets", "trgm", "usename", diff --git a/files/postgres_exporter b/files/postgres_exporter new file mode 100755 index 0000000..f5ffc98 Binary files /dev/null and b/files/postgres_exporter differ diff --git a/manifests/exporter/dirs.pp b/manifests/exporter/dirs.pp new file mode 100644 index 0000000..15998ab --- /dev/null +++ b/manifests/exporter/dirs.pp @@ -0,0 +1,21 @@ +## postgresql_cd::exporter::dirs.pp +# Module name: postgresql_cd +# Author: Arne Teuke (arne_teuke@confdroid.com) +# @summary Class manages the postgresql exporter dirs +############################################################################### +class postgresql_cd::exporter::dirs ( + +) inherits postgresql_cd::params { + if ($fqdn == $pl_server_fqdn) and ($pl_use_exporter == true) { + file { $pl_install_dir: + ensure => directory, + owner => 'postgres', + group => 'postgres', + mode => '0755', + selrange => s0, + selrole => object_r, + seltype => usr_t, + seluser => system_u, + } + } +} diff --git a/manifests/exporter/files.pp b/manifests/exporter/files.pp new file mode 100644 index 0000000..0d32416 --- /dev/null +++ b/manifests/exporter/files.pp @@ -0,0 +1,11 @@ +## postgresql_cd::exporter::files.pp +# Module name: postgresql_cd +# Author: Arne Teuke (arne_teuke@confdroid.com) +# @summary Class manages the postgresql exporter files +############################################################################### +class postgresql_cd::exporter::files ( + +) inherits postgresql_cd::params { + if ($fqdn == $pl_server_fqdn) and ($pl_use_exporter == true) { + require postgresql_cd::exporter::dirs +} diff --git a/manifests/exporter/service.pp b/manifests/exporter/service.pp new file mode 100644 index 0000000..efe9686 --- /dev/null +++ b/manifests/exporter/service.pp @@ -0,0 +1,19 @@ +## postgresql_cd::exporter::service.pp +# Module name: postgresql_cd +# Author: Arne Teuke (arne_teuke@confdroid.com) +# @summary Class manages the postgresql exporter service +############################################################################### +class postgresql_cd::exporter::service ( + +) inherits postgresql_cd::params { + if ($fqdn == $pl_server_fqdn) and ($pl_use_exporter == true) { + require postgresql_cd::exporter::files + +# service { $pl_exporter_service: +# ensure => running, +# hasstatus => true, +# hasrestart => true, +# enable => true, +# } + } +} diff --git a/manifests/main/config.pp b/manifests/main/config.pp index 5a8f2e2..1e2c816 100644 --- a/manifests/main/config.pp +++ b/manifests/main/config.pp @@ -10,5 +10,8 @@ class postgresql_cd::main::config ( if $fqdn == $pl_server_fqdn { include postgresql_cd::server::service + if $pl_use_exporter == true { + include postgresql_cd::exporter::service + } } } diff --git a/manifests/main/install.pp b/manifests/main/install.pp index 9c485ae..bce4d4a 100644 --- a/manifests/main/install.pp +++ b/manifests/main/install.pp @@ -13,6 +13,11 @@ class postgresql_cd::main::install ( package { $reqpackages_client: ensure => $pkg_ensure, } + if $pl_manage_extensions == true { + package { $reqpackages_extensions: + ensure => $pkg_ensure, + } + } } if $fqdn != $pl_server_fqdn { diff --git a/manifests/params.pp b/manifests/params.pp index e0de66d..aff38d7 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -5,6 +5,7 @@ # @param [String] pl_server_fqdn the fqdn of the postgresql server. Any other # system will be configured as client # @param [Array] reqpackages_server the packages for the server +# @param [Array] reqpackages_extensions the packages for extensions # @param [String] reqpackages_client the packages for the client # @param [String] pkg_ensure which version of the packages to install, i.e. # 'latest', 'present' '13.20', @@ -20,6 +21,9 @@ # @param [String] pl_server_key the name of the server key # @param [String] pl_ca_crt the name of the CA crt # @param [Boolean] pl_manage_content whether to manage roles and databases +# @param [Boolean] pl_manage_extensions whether to manage extensions +# @param [Boolean] pl_use_exporter whether to use the postgresql-exporter +# @param [String] pl_install_dir the path for the postgres-exporter files ############################################################################## class postgresql_cd::params ( @@ -27,6 +31,7 @@ class postgresql_cd::params ( # installation Array $reqpackages_server = ['postgresql-server','postgresql-contrib'], + Array $reqpackages_extensions = ['pg_stat_statements','timescaledb'], String $reqpackages_client = 'postgresql', String $pkg_ensure = 'latest', @@ -45,6 +50,11 @@ class postgresql_cd::params ( String $pl_server_key = 'server.key', String $pl_ca_crt = 'root.crt', Boolean $pl_manage_content = true, + Boolean $pl_manage_extensions = false, + + # postgresql exporter + Boolean $pl_use_exporter = false, + String $pl_install_dir = '/opt/postgres-exporter', ) { $fqdn = $facts['networking']['fqdn'] @@ -52,9 +62,6 @@ class postgresql_cd::params ( $os_name = $facts['os']['name'] $os_release = $facts['os']['release']['major'] - # Service - $pl_service = 'postgresql' - # Directories $pl_data_dir = '/var/lib/pgsql/data/' @@ -63,6 +70,10 @@ class postgresql_cd::params ( $pl_pg_hba_rule_conf = 'postgresql_cd/server/pghba/pg_hba_rule.conf.erb' $pl_pg_hba_conf_erb = 'postgresql_cd/server/pghba/pg_hba.conf.erb' + # Service + $pl_service = 'postgresql' + $pl_exporter_service = 'postgres_exporter' + # includes must be last include postgresql_cd::main::config } diff --git a/templates/postgresql.conf.erb b/templates/postgresql.conf.erb index 325105c..e0d134c 100644 --- a/templates/postgresql.conf.erb +++ b/templates/postgresql.conf.erb @@ -705,8 +705,12 @@ lc_time = 'en_US.UTF-8' # locale for time formatting default_text_search_config = 'pg_catalog.english' # - Shared Library Preloading - - -#shared_preload_libraries = '' # (change requires restart) +<% @pl_manage_extensions == true -%> +shared_preload_libraries = <%= @pl_reqpackages_extensions %> # (change requires restart) +<% end -%> +<% @pl_manage_extensions != true -%> +# shared_preload_libraries = '' +<% end -%> #local_preload_libraries = '' #session_preload_libraries = '' #jit_provider = 'llvmjit' # JIT library to use