|
1 | 1 | # Class for configuring SSL connection for the PuppetDB postgresql database. See README.md for more |
2 | 2 | # information. |
3 | | -class puppetdb::database::ssl_configuration( |
| 3 | +class puppetdb::database::ssl_configuration ( |
4 | 4 | $database_name = $puppetdb::params::database_name, |
5 | 5 | $database_username = $puppetdb::params::database_username, |
| 6 | + $read_database_username = $puppetdb::params::read_database_username, |
6 | 7 | $puppetdb_server = $puppetdb::params::puppetdb_server, |
7 | 8 | $postgresql_ssl_key_path = $puppetdb::params::postgresql_ssl_key_path, |
8 | 9 | $postgresql_ssl_cert_path = $puppetdb::params::postgresql_ssl_cert_path, |
9 | 10 | $postgresql_ssl_ca_cert_path = $puppetdb::params::postgresql_ssl_ca_cert_path |
10 | 11 | ) inherits puppetdb::params { |
11 | | - |
12 | | - file {'postgres private key': |
| 12 | + File { |
13 | 13 | ensure => present, |
14 | | - path => "${postgresql::server::datadir}/server.key", |
15 | | - source => $postgresql_ssl_key_path, |
16 | 14 | owner => 'postgres', |
17 | 15 | mode => '0600', |
18 | 16 | require => Package['postgresql-server'], |
19 | 17 | } |
20 | 18 |
|
21 | | - file {'postgres public key': |
22 | | - ensure => present, |
| 19 | + file { 'postgres private key': |
| 20 | + path => "${postgresql::server::datadir}/server.key", |
| 21 | + source => $postgresql_ssl_key_path, |
| 22 | + } |
| 23 | + |
| 24 | + file { 'postgres public key': |
23 | 25 | path => "${postgresql::server::datadir}/server.crt", |
24 | 26 | source => $postgresql_ssl_cert_path, |
25 | | - owner => 'postgres', |
26 | | - mode => '0600', |
27 | | - require => Package['postgresql-server'], |
28 | 27 | } |
29 | 28 |
|
30 | | - postgresql::server::config_entry {'ssl': |
| 29 | + postgresql::server::config_entry { 'ssl': |
31 | 30 | ensure => present, |
32 | 31 | value => 'on', |
33 | 32 | require => [File['postgres private key'], File['postgres public key']] |
34 | 33 | } |
35 | 34 |
|
36 | | - postgresql::server::config_entry {'ssl_cert_file': |
| 35 | + postgresql::server::config_entry { 'ssl_cert_file': |
37 | 36 | ensure => present, |
38 | 37 | value => "${postgresql::server::datadir}/server.crt", |
39 | 38 | require => [File['postgres private key'], File['postgres public key']] |
40 | 39 | } |
41 | 40 |
|
42 | | - postgresql::server::config_entry {'ssl_key_file': |
| 41 | + postgresql::server::config_entry { 'ssl_key_file': |
43 | 42 | ensure => present, |
44 | 43 | value => "${postgresql::server::datadir}/server.key", |
45 | 44 | require => [File['postgres private key'], File['postgres public key']] |
46 | 45 | } |
47 | 46 |
|
48 | | - postgresql::server::config_entry {'ssl_ca_file': |
| 47 | + postgresql::server::config_entry { 'ssl_ca_file': |
49 | 48 | ensure => present, |
50 | 49 | value => $postgresql_ssl_ca_cert_path, |
51 | 50 | require => [File['postgres private key'], File['postgres public key']] |
52 | 51 | } |
53 | 52 |
|
54 | | - $identity_map_key = "${database_name}-${database_username}-map" |
55 | | - |
56 | | - postgresql::server::pg_hba_rule { "Allow certificate mapped connections to ${database_name} as ${database_username} (ipv4)": |
57 | | - type => 'hostssl', |
58 | | - database => $database_name, |
59 | | - user => $database_username, |
60 | | - address => '0.0.0.0/0', |
61 | | - auth_method => 'cert', |
62 | | - order => 0, |
63 | | - auth_option => "map=${identity_map_key} clientcert=1" |
64 | | - } |
65 | | - |
66 | | - postgresql::server::pg_hba_rule { "Allow certificate mapped connections to ${database_name} as ${database_username} (ipv6)": |
67 | | - type => 'hostssl', |
68 | | - database => $database_name, |
69 | | - user => $database_username, |
70 | | - address => '::0/0', |
71 | | - auth_method => 'cert', |
72 | | - order => 0, |
73 | | - auth_option => "map=${identity_map_key} clientcert=1" |
| 53 | + puppetdb::database::postgresql_ssl_rules { "Configure postgresql ssl rules for $database_username": |
| 54 | + database_name => $database_name, |
| 55 | + database_username => $database_username, |
| 56 | + puppetdb_server => $puppetdb_server, |
74 | 57 | } |
75 | 58 |
|
76 | | - postgresql::server::pg_ident_rule {"Map the SSL certificate of the server as a ${database_username} user": |
77 | | - map_name => $identity_map_key, |
78 | | - system_username => $puppetdb_server, |
79 | | - database_username => $database_username, |
| 59 | + puppetdb::database::postgresql_ssl_rules { "Configure postgresql ssl rules for $read_database_username": |
| 60 | + database_name => $database_name, |
| 61 | + database_username => $read_database_username, |
| 62 | + puppetdb_server => $puppetdb_server, |
80 | 63 | } |
81 | 64 | } |
0 commit comments