diff --git a/.vscode/settings.json b/.vscode/settings.json
index 2922e3a..5bf56fa 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -14,6 +14,7 @@
"geqo",
"hashagg",
"hashjoin",
+ "hostnossl",
"hostssl",
"indexonlyscan",
"indexscan",
@@ -34,10 +35,12 @@
"naptime",
"nestloop",
"partitionwise",
+ "pghba",
"pgsql",
"restartpoint",
"seqscan",
"seqscans",
+ "sspi",
"sysconfdir",
"sysv",
"tablespace",
diff --git a/doc/_index.html b/doc/_index.html
index ac8b1ec..09dfdaf 100644
--- a/doc/_index.html
+++ b/doc/_index.html
@@ -108,6 +108,11 @@
+
diff --git a/doc/puppet_classes/postgresql_cd_3A_3Amain_3A_3Afiles.html b/doc/puppet_classes/postgresql_cd_3A_3Amain_3A_3Afiles.html
index 8d2be67..146e44f 100644
--- a/doc/puppet_classes/postgresql_cd_3A_3Amain_3A_3Afiles.html
+++ b/doc/puppet_classes/postgresql_cd_3A_3Amain_3A_3Afiles.html
@@ -134,7 +134,8 @@
36
37
38
-39
+39
+40
# File 'manifests/main/files.pp', line 6
@@ -146,18 +147,19 @@ class postgresql_cd::main::files (
require postgresql_cd::server::initdb
require postgresql_cd::main::dirs
- file { '/var/lib/pgsql/data/pg_hba.conf':
- ensure => file,
- owner => 'postgres',
- group => 'postgres',
- mode => '0600',
- selrange => s0,
- selrole => object_r,
- seltype => postgresql_db_t,
- seluser => unconfined_u,
- content => template('postgresql_cd/pg_hba.conf.erb'),
- notify => Service[$pl_service],
- }
+ # outsourced to pghba::pghba for concatenation
+# file { '/var/lib/pgsql/data/pg_hba.conf':
+# ensure => file,
+# owner => 'postgres',
+# group => 'postgres',
+# mode => '0600',
+# selrange => s0,
+# selrole => object_r,
+# seltype => postgresql_db_t,
+# seluser => unconfined_u,
+# content => template('postgresql_cd/pg_hba.conf.erb'),
+# notify => Service[$pl_service],
+# }
file { '/var/lib/pgsql/data/postgresql.conf':
ensure => file,
diff --git a/doc/puppet_classes/postgresql_cd_3A_3Aparams.html b/doc/puppet_classes/postgresql_cd_3A_3Aparams.html
index d8234ef..8e0dd28 100644
--- a/doc/puppet_classes/postgresql_cd_3A_3Aparams.html
+++ b/doc/puppet_classes/postgresql_cd_3A_3Aparams.html
@@ -81,6 +81,8 @@
postgresql_cd::firewall::iptables
+ postgresql_cd::server::pghba::pg_hba
+
@@ -429,7 +431,11 @@
58
59
60
-61
+61
+62
+63
+64
+65
|
# File 'manifests/params.pp', line 23
@@ -470,6 +476,10 @@ class postgresql_cd::params (
# Directories
$pl_data_dir = '/var/lib/pgsql/data/'
+ # files
+ $pl_pl_pg_hba_conf = "${pl_data_dir}/pg_hba.conf"
+ $pl_pg_hba_rule_conf = 'postgresql_cd/pg_hba_rule.conf.erb'
+
# includes must be last
include postgresql_cd::main::config
}
diff --git a/doc/puppet_classes/postgresql_cd_3A_3Aserver_3A_3Apghba_3A_3Apg_hba.html b/doc/puppet_classes/postgresql_cd_3A_3Aserver_3A_3Apghba_3A_3Apg_hba.html
new file mode 100644
index 0000000..a5b6901
--- /dev/null
+++ b/doc/puppet_classes/postgresql_cd_3A_3Aserver_3A_3Apghba_3A_3Apg_hba.html
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+ Puppet Class: postgresql_cd::server::pghba::pg_hba
+
+ — Documentation by YARD 0.9.36
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Puppet Class: postgresql_cd::server::pghba::pg_hba
+
+
+ Summary
+ Class manages pg_hba.conf file and line entries through define
+pg_hba_rule.pp
+
+ Overview
+
+
+
+ postgresql_cd::server::pg_hba.pp Module name: postgresql_cd Author: Arne Teuke (arne_teuke@puppetsoft.com) }
+
+
+
+
+
+
+
+
+
+
+
+
+
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+ |
+
+ # File 'manifests/server/pghba/pg_hba.pp', line 15
+
+class postgresql_cd::server::pghba::pg_hba (
+
+) inherits postgresql_cd::params {
+ if $fqdn == $pl_server_fqdn {
+ # create the pg_hba.conf file
+
+ concat { $pl_pg_hba_conf:
+ ensure => present,
+ owner => 'postgres',
+ mode => '0640',
+ notify => Service[$pl_service],
+ }
+
+ # manage file header
+
+ concat::fragment { 'header':
+ target => $pl_pg_hba_conf,
+ content => template($pl_pg_hba_conf_erb),
+ order => '000',
+ }
+
+ # manage default rules => should go into external config set
+# postgresql_cd::server::pghba::pg_hba_rule { 'local access for role postgres':
+# psql_auth_type => 'local',
+# psql_auth_database => 'all',
+# psql_auth_user => $ql_user_name,
+# psql_auth_method => 'trust',
+# psql_auth_order => '001',
+# psql_auth_option => $ql_auth_option,
+# }
+
+# postgresql_cd::server::pghba::pg_hba_rule { 'local access for all roles':
+# psql_auth_type => 'local',
+# psql_auth_database => 'all',
+# psql_auth_user => 'all',
+# psql_auth_method => 'trust',
+# psql_auth_order => '002',
+# psql_auth_option => $pl_auth_option,
+# }
+ }
+}
+ |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/manifests/main/files.pp b/manifests/main/files.pp
index cf531ec..c65674e 100644
--- a/manifests/main/files.pp
+++ b/manifests/main/files.pp
@@ -10,18 +10,19 @@ class postgresql_cd::main::files (
require postgresql_cd::server::initdb
require postgresql_cd::main::dirs
- file { '/var/lib/pgsql/data/pg_hba.conf':
- ensure => file,
- owner => 'postgres',
- group => 'postgres',
- mode => '0600',
- selrange => s0,
- selrole => object_r,
- seltype => postgresql_db_t,
- seluser => unconfined_u,
- content => template('postgresql_cd/pg_hba.conf.erb'),
- notify => Service[$pl_service],
- }
+ # outsourced to pghba::pghba for concatenation
+# file { '/var/lib/pgsql/data/pg_hba.conf':
+# ensure => file,
+# owner => 'postgres',
+# group => 'postgres',
+# mode => '0600',
+# selrange => s0,
+# selrole => object_r,
+# seltype => postgresql_db_t,
+# seluser => unconfined_u,
+# content => template('postgresql_cd/pg_hba.conf.erb'),
+# notify => Service[$pl_service],
+# }
file { '/var/lib/pgsql/data/postgresql.conf':
ensure => file,
diff --git a/manifests/params.pp b/manifests/params.pp
index a816b21..21a2ac8 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -56,6 +56,10 @@ class postgresql_cd::params (
# Directories
$pl_data_dir = '/var/lib/pgsql/data/'
+ # files
+ $pl_pl_pg_hba_conf = "${pl_data_dir}/pg_hba.conf"
+ $pl_pg_hba_rule_conf = 'postgresql_cd/pg_hba_rule.conf.erb'
+
# includes must be last
include postgresql_cd::main::config
}
diff --git a/manifests/server/pghba/pg_hba.pp b/manifests/server/pghba/pg_hba.pp
new file mode 100644
index 0000000..364e343
--- /dev/null
+++ b/manifests/server/pghba/pg_hba.pp
@@ -0,0 +1,55 @@
+## postgresql_cd::server::pg_hba.pp
+# Module name: postgresql_cd
+# Author: Arne Teuke (arne_teuke@puppetsoft.com)
+# @summary Class manages pg_hba.conf file and line entries through define
+# pg_hba_rule.pp
+# @example postgresql_cd::server::pghba::pg_hba_rule { 'local access for role postgres':
+# psql_auth_type => 'local',
+# psql_auth_database => 'all',
+# psql_auth_user => 'postgres',
+# psql_auth_method => 'trust',
+# psql_auth_order => '001',
+# psql_auth_option => '',
+# }
+##############################################################################
+class postgresql_cd::server::pghba::pg_hba (
+
+) inherits postgresql_cd::params {
+ if $fqdn == $pl_server_fqdn {
+ # create the pg_hba.conf file
+
+ concat { $pl_pg_hba_conf:
+ ensure => present,
+ owner => 'postgres',
+ mode => '0640',
+ notify => Service[$pl_service],
+ }
+
+ # manage file header
+
+ concat::fragment { 'header':
+ target => $pl_pg_hba_conf,
+ content => template($pl_pg_hba_conf_erb),
+ order => '000',
+ }
+
+ # manage default rules => should go into external config set
+# postgresql_cd::server::pghba::pg_hba_rule { 'local access for role postgres':
+# psql_auth_type => 'local',
+# psql_auth_database => 'all',
+# psql_auth_user => $ql_user_name,
+# psql_auth_method => 'trust',
+# psql_auth_order => '001',
+# psql_auth_option => $ql_auth_option,
+# }
+
+# postgresql_cd::server::pghba::pg_hba_rule { 'local access for all roles':
+# psql_auth_type => 'local',
+# psql_auth_database => 'all',
+# psql_auth_user => 'all',
+# psql_auth_method => 'trust',
+# psql_auth_order => '002',
+# psql_auth_option => $pl_auth_option,
+# }
+ }
+}
diff --git a/manifests/server/pghba/pg_hba_rule.ppp b/manifests/server/pghba/pg_hba_rule.ppp
new file mode 100644
index 0000000..58f68ad
--- /dev/null
+++ b/manifests/server/pghba/pg_hba_rule.ppp
@@ -0,0 +1,45 @@
+## postgresql_cd::server::pghba::pg_hba_rule
+# Module name: postgresql_cd
+# Author: Arne Teuke (arne_teuke@puppetsoft.com)
+# @summary define manages rule entries for pg_hba configuration file
+# @see https://www.postgresql.org/docs/9.6/static/auth-pg-hba-conf.html
+# @param [string] pl_auth_type Specify the authentication type, can be
+# 'local', 'host', 'hostssl' or 'hostnossl'.
+# @param [string] pl_auth_database Specify the database for the connection
+# @param [string] pl_auth_user Specify the user for the connection
+# @param [string] pl_auth_address SPecify IP address or FQDN for the
+# connection, i.e. where to connect FROM.
+# @param [string] pl_auth_method Specify the auth method, can be 'trust',
+# 'reject', 'md5' , 'password', 'gss', 'sspi', 'ident', 'peer', 'ldap',
+# 'radius', 'cert', 'pam','bsd'
+# @param [string] pl_auth_option After the auth-method field, there can be
+# field(s) of the form name=value that specify options for the authentication
+# method.
+# @param [string] pl_auth_order Specify the order in which the entry should
+# appear on the list. Lower orders are higher on the list.
+# @param [string] pl_auth_description Specify a description for the entry.
+##############################################################################
+define postgresql_cd::server::pghba::pg_hba_rule (
+
+ Optional[String] $pl_auth_type = undef,
+ Optional[String] $pl_auth_database = undef,
+ Optional[String] $pl_auth_user = undef,
+ Optional[String] $pl_auth_address = undef,
+ Optional[String] $pl_auth_method = undef,
+ Optional[String] $pl_auth_option = undef,
+ Optional[String] $pl_auth_order = undef,
+ Optional[String] $pl_auth_description = undef,
+
+) {
+ $pl_pg_hba_conf = $postgresql_cd::params::pl_pg_hba_conf
+ $pl_pg_hba_rule_conf = $postgresql_cd::params::pl_pg_hba_rule_conf
+ $pl_data_dir = $postgresql_cd::params::pl_data_dir
+
+# create rule fragment
+
+ concat::fragment { "pl_rule_${name}":
+ target => $pl_pg_hba_conf,
+ content => template($pl_pg_hba_rule_conf),
+ order => $pl_auth_order,
+ }
+}
diff --git a/templates/pg_hba.conf.erb b/templates/pg_hba.conf.erb
index 53cdb06..958ce22 100644
--- a/templates/pg_hba.conf.erb
+++ b/templates/pg_hba.conf.erb
@@ -18,3 +18,5 @@ host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host all all 0.0.0.0/0 md5
+
+# custom rules below
diff --git a/templates/pg_hba_rule.conf.erb b/templates/pg_hba_rule.conf.erb
index 2e84157..4cdf5a8 100644
--- a/templates/pg_hba_rule.conf.erb
+++ b/templates/pg_hba_rule.conf.erb
@@ -1,3 +1,3 @@
# description: <%=@name%>
-# order number: <%=@psql_auth_order%>
+# order number: <%=@pl_auth_order%>
<%= @pl_auth_type %> <%= @pl_auth_database %> <%= @pl_auth_user %> <%= @pl_auth_address %> <%=@pl_auth_method %> <%=@psql_auth_option%>
diff --git a/templates/postgresql.conf.erb b/templates/postgresql.conf.erb
index 41f1078..325105c 100644
--- a/templates/postgresql.conf.erb
+++ b/templates/postgresql.conf.erb
@@ -96,7 +96,7 @@ max_connections = <%= @pl_max_conn %>
# - SSL -
<% if @pl_ssl_enabled == true -%>
-ssl = on
+ssl = on
ssl_ca_file = '<%= @pl_data_dir %><%= @pl_ca_crt -%>'
ssl_cert_file = '<%= @pl_data_dir %><%= @pl_server_crt -%>'
ssl_key_file = '<%= @pl_data_dir %><%= @pl_server_key -%>'
|