Skip to content

Commit ebcec2d

Browse files
authored
Merge pull request #78 from nwops/cert_check
Make cert tasks more idempotent
2 parents 03de2bd + a54bae3 commit ebcec2d

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

tasks/sign_csr.rb

+9-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,20 @@
22
#
33
require 'json'
44
require 'open3'
5+
require 'puppet'
6+
7+
def csr_signed?(certname)
8+
!File.exist?(File.join(Puppet.settings[:csrdir], "#{certname}.pem")) &&
9+
File.exist?(File.join(Puppet.settings[:cadir], 'signed', "#{certname}.pem"))
10+
end
511

612
def main
13+
Puppet.initialize_settings
714
params = JSON.parse(STDIN.read)
15+
unsigned = params['certnames'].reject { |name| csr_signed?(name) }
816

917
cmd = ['/opt/puppetlabs/bin/puppetserver', 'ca', 'sign',
10-
'--certname', params['certnames'].join(',')]
18+
'--certname', unsigned.join(',')]
1119

1220
stdout, status = Open3.capture2(*cmd)
1321
puts stdout

tasks/submit_csr.rb

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
require 'json'
44
require 'open3'
55

6+
def already_signed?
7+
cmd = ['/opt/puppetlabs/bin/puppet', 'ssl', 'verify']
8+
_, status = Open3.capture2(*cmd)
9+
status.success?
10+
end
11+
612
def main
713
majver = `/opt/puppetlabs/bin/puppet --version`
814
.chomp
@@ -22,6 +28,7 @@ def main
2228
'--dns-alt-names', conf['dns_alt_names'],
2329
conf['certname']]
2430
else
31+
exit 0 if already_signed?
2532
cmd = ['/opt/puppetlabs/bin/puppet', 'ssl', 'submit_request']
2633
end
2734

0 commit comments

Comments
 (0)