Skip to content

Commit e62ab8d

Browse files
authored
Merge pull request #495 from cultuurnet/feature/OPS-1248
Declare and trust Vault UI certificate
2 parents e707aef + b7196ed commit e62ab8d

File tree

20 files changed

+226
-24
lines changed

20 files changed

+226
-24
lines changed

manifests/files.pp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,11 @@
5252
mode => '0755',
5353
require => File['/etc/puppetlabs/facter']
5454
}
55+
56+
# Realize a list of 'default' files on all servers
57+
realize File['/data']
58+
59+
realize File['/etc/puppetlabs']
60+
realize File['/etc/puppetlabs/facter']
61+
realize File['/etc/puppetlabs/facter/facts.d']
5562
}

manifests/glassfish/domain/heap.pp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@
66

77
include ::profiles
88

9+
realize File['/etc/puppetlabs/facter/facts.d']
10+
911
$default_maximum_size = '512m'
1012
$jvmoption_default_attributes = {
1113
user => 'glassfish',
1214
passwordfile => '/home/glassfish/asadmin.pass',
1315
portbase => String($portbase)
1416
}
1517

18+
1619
if $initial_size {
1720
jvmoption { "Domain ${title} initial heap jvmoption":
1821
ensure => 'present',
@@ -76,6 +79,7 @@
7679
file { "Domain ${title} heap external facts":
7780
ensure => 'file',
7881
path => "/etc/puppetlabs/facter/facts.d/glassfish.${title}.heap.yaml",
79-
content => template('profiles/glassfish/domain/heap.yaml.erb')
82+
content => template('profiles/glassfish/domain/heap.yaml.erb'),
83+
require => File['/etc/puppetlabs/facter/facts.d']
8084
}
8185
}

manifests/mysql/rds.pp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@
44

55
$rds_mysqld_version = lookup('terraform::rds::mysqld_version', Optional[String], 'first', undef)
66

7+
realize File['/etc/puppetlabs/facter/facts.d']
8+
79
if $rds_mysqld_version {
810
file { 'mysqld_version_external_fact':
911
ensure => 'file',
1012
path => '/etc/puppetlabs/facter/facts.d/mysqld_version.txt',
1113
owner => 'root',
1214
group => 'root',
1315
mode => '0644',
14-
content => "mysqld_version=${rds_mysqld_version}"
16+
content => "mysqld_version=${rds_mysqld_version}",
17+
require => File['/etc/puppetlabs/facter/facts.d']
1518
}
1619

1720
profiles::mysql::root_my_cnf { $host:

manifests/packages.pp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
require => Apt::Source['publiq-tools']
142142
}
143143

144-
# Realize a list of 'default' packages on all servers
144+
# Realize a list of 'default' packages on all nodes
145145
realize Package['jq']
146146
realize Package['iftop']
147147
}

manifests/publiq/vault_ui.pp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class profiles::publiq::vault_ui (
2+
String $certname
3+
) inherits ::profiles {
4+
5+
realize File['/etc/puppetlabs/facter/facts.d']
6+
7+
puppet_certificate { $certname:
8+
ensure => 'present',
9+
waitforcert => 60,
10+
renewal_grace_period => 5,
11+
clean => true
12+
}
13+
14+
file { 'vault_ui_certificate_external_fact':
15+
ensure => 'file',
16+
path => '/etc/puppetlabs/facter/facts.d/vault_ui_certificate.txt',
17+
content => 'vault_ui_certificate_available=true',
18+
require => [File['/etc/puppetlabs/facter/facts.d'], Puppet_certificate[$certname]]
19+
}
20+
21+
if $facts['vault_ui_certificate_available'] {
22+
@@profiles::vault::trusted_certificate { $certname:
23+
policies => ['puppet_certificate', 'ui_certificate']
24+
}
25+
}
26+
}

manifests/puppet/agent.pp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
}
1111

1212
realize Apt::Source['puppet']
13-
14-
realize File['/etc/puppetlabs']
15-
realize File['/etc/puppetlabs/facter']
1613
realize File['/etc/puppetlabs/facter/facts.d']
1714

1815
package { 'puppet-agent':

manifests/vault.pp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,16 @@
108108
}
109109

110110
if $auto_unseal {
111-
class { 'profiles::vault::authentication':
112-
require => Class['profiles::vault::seal']
113-
}
114-
115111
class { 'profiles::vault::secrets_engines':
116112
require => Class['profiles::vault::seal']
117113
}
118114

119115
class { 'profiles::vault::policies':
120-
require => [Class['profiles::vault::secrets_engines'], Class['profiles::vault::authentication']]
116+
require => Class['profiles::vault::secrets_engines']
117+
}
118+
119+
class { 'profiles::vault::authentication':
120+
require => Class['profiles::vault::policies']
121121
}
122122
}
123123
}

manifests/vault/init.pp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
realize Group['vault']
2323
realize User['vault']
2424
realize Package['jq']
25-
realize File['/etc/puppetlabs']
26-
realize File['/etc/puppetlabs/facter']
2725
realize File['/etc/puppetlabs/facter/facts.d']
2826

2927
file { 'vault_gpg_keys':
@@ -99,13 +97,13 @@
9997
command => "/usr/bin/cat /home/vault/vault_init_output.json | /usr/local/bin/vault-process-init-output \"${gpg_keys_owners}\" > /etc/puppetlabs/facter/facts.d/vault_encrypted_unseal_keys.json",
10098
creates => '/etc/puppetlabs/facter/facts.d/vault_encrypted_unseal_keys.json',
10199
logoutput => 'on_failure',
102-
require => [Exec['vault_init'], Package['jq'], File['vault_process_init_output']]
100+
require => [Exec['vault_init'], Package['jq'], File['vault_process_init_output'], File['/etc/puppetlabs/facter/facts.d']]
103101
}
104102

105103
file { 'vault_initialized_external_fact':
106104
ensure => 'file',
107105
path => '/etc/puppetlabs/facter/facts.d/vault_initialized.txt',
108106
content => 'vault_initialized=true',
109-
require => Exec['vault_init']
107+
require => [Exec['vault_init'], File['/etc/puppetlabs/facter/facts.d']]
110108
}
111109
}

manifests/vault/policies.pp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,10 @@
1919
policies_directory => $policies_directory,
2020
require => File['vault_policies']
2121
}
22+
23+
profiles::vault::policy { 'ui_certificate':
24+
policy => 'path "puppet/*" { capabilities = ["create", "update", "patch", "delete", "list"] }',
25+
policies_directory => $policies_directory,
26+
require => File['vault_policies']
27+
}
2228
}

manifests/vault/trusted_certificate.pp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
define profiles::vault::trusted_certificate (
2-
String $trusted_certs_directory = '/etc/vault.d/trusted_certs',
3-
Optional[String] $certificate = undef
2+
String $trusted_certs_directory = '/etc/vault.d/trusted_certs',
3+
Variant[String, Array[String]] $policies = 'puppet_certificate',
4+
Optional[String] $certificate = undef
45
) {
56

67
include ::profiles
78

9+
$policies_string = [$policies].flatten.join(',')
10+
811
realize Group['vault']
912
realize User['vault']
1013

@@ -21,7 +24,7 @@
2124
}
2225

2326
exec { "vault_trust_cert ${title}":
24-
command => "/usr/bin/vault write auth/cert/certs/${title} display_name=${title} policies=puppet_certificate certificate=@${trusted_certs_directory}/${title}.pem",
27+
command => "/usr/bin/vault write auth/cert/certs/${title} display_name=${title} policies=${policies_string} certificate=@${trusted_certs_directory}/${title}.pem",
2528
user => 'vault',
2629
unless => "/usr/bin/vault read auth/cert/certs/${title}",
2730
logoutput => 'on_failure',

0 commit comments

Comments
 (0)