Skip to content

Commit 34d53f7

Browse files
authored
Check CA path when creating the CA cert
When starting a new puppetserver as CA with existing CA files, the current code tries to perform 'puppetserver ca setup' because the puppetserver's cert does not exist yet. However, that command fails because the CA cert files exist and can, correctly, not be overwritten. This change checks for the CA cert, instead of the server's own cert.
1 parent 8dcd89d commit 34d53f7

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

manifests/server/config.pp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,13 +158,15 @@
158158
# Generate a new CA and host cert if our host cert doesn't exist
159159
if $puppet::server::ca {
160160
if versioncmp($::puppetversion, '6.0') > 0 {
161+
$creates = $puppet::server::ssl_ca_cert
161162
$command = "${puppet::puppetserver_cmd} ca setup"
162163
} else {
164+
$creates = $puppet::server::ssl_cert
163165
$command = "${puppet::puppet_cmd} cert --generate ${puppet::server::certname} --allow-dns-alt-names"
164166
}
165167

166168
exec {'puppet_server_config-generate_ca_cert':
167-
creates => $puppet::server::ssl_cert,
169+
creates => $creates,
168170
command => $command,
169171
umask => '0022',
170172
require => [

spec/classes/puppet_server_spec.rb

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@
1212
confdir = '/usr/local/etc/puppet'
1313
environments_dir = '/usr/local/etc/puppet/environments'
1414
etcdir = '/usr/local/etc/puppet'
15-
if facts[:puppetversion] >= '6.0'
16-
puppetcacmd = '/usr/local/bin/puppetserver ca setup'
17-
else
18-
puppetcacmd = '/usr/local/bin/puppet cert --generate puppetmaster.example.com --allow-dns-alt-names'
19-
end
2015
puppetserver_logdir = '/var/log/puppetserver'
2116
puppetserver_rundir = '/var/run/puppetserver'
2217
puppetserver_vardir = '/var/puppet/server/data/puppetserver'
@@ -25,18 +20,20 @@
2520
vardir = '/var/puppet'
2621
rubydir = %r{^/usr/local/lib/ruby/site_ruby/\d+\.\d+/puppet$}
2722
puppetserver_pkg = puppet_major > 4 ? "puppetserver#{puppet_major}" : 'puppetserver'
23+
if facts[:puppetversion] >= '6.0'
24+
puppetcacmd = '/usr/local/bin/puppetserver ca setup'
25+
cert_to_create = "#{ssldir}/ca/ca_crt.pem"
26+
else
27+
puppetcacmd = '/usr/local/bin/puppet cert --generate puppetmaster.example.com --allow-dns-alt-names'
28+
cert_to_create = "#{ssldir}/certs/puppetmaster.example.com.pem"
29+
end
2830
else
2931
codedir = '/etc/puppetlabs/code'
3032
conf_d_dir = '/etc/puppetlabs/puppetserver/conf.d'
3133
conf_file = '/etc/puppetlabs/puppet/puppet.conf'
3234
confdir = '/etc/puppetlabs/puppet'
3335
environments_dir = '/etc/puppetlabs/code/environments'
3436
etcdir = '/etc/puppetlabs/puppet'
35-
if facts[:puppetversion] >= '6.0'
36-
puppetcacmd = '/opt/puppetlabs/bin/puppetserver ca setup'
37-
else
38-
puppetcacmd = '/opt/puppetlabs/bin/puppet cert --generate puppetmaster.example.com --allow-dns-alt-names'
39-
end
4037
puppetserver_logdir = '/var/log/puppetlabs/puppetserver'
4138
puppetserver_rundir = '/var/run/puppetlabs/puppetserver'
4239
puppetserver_vardir = '/opt/puppetlabs/server/data/puppetserver'
@@ -45,6 +42,13 @@
4542
vardir = '/opt/puppetlabs/puppet/cache'
4643
rubydir = '/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet'
4744
puppetserver_pkg = 'puppetserver'
45+
if facts[:puppetversion] >= '6.0'
46+
puppetcacmd = '/opt/puppetlabs/bin/puppetserver ca setup'
47+
cert_to_create = "#{ssldir}/ca/ca_crt.pem"
48+
else
49+
puppetcacmd = '/opt/puppetlabs/bin/puppet cert --generate puppetmaster.example.com --allow-dns-alt-names'
50+
cert_to_create = "#{ssldir}/certs/puppetmaster.example.com.pem"
51+
end
4852
end
4953

5054
let(:facts) { facts }
@@ -109,7 +113,7 @@
109113
.with_umask('0022')
110114

111115
should contain_exec('puppet_server_config-generate_ca_cert') \
112-
.with_creates("#{ssldir}/certs/puppetmaster.example.com.pem") \
116+
.with_creates(cert_to_create) \
113117
.with_command(puppetcacmd) \
114118
.with_umask('0022') \
115119
.that_requires(["Concat[#{conf_file}]", 'Exec[puppet_server_config-create_ssl_dir]'])

0 commit comments

Comments
 (0)