|
1 | 1 | plan peadm::misc::upgrade_trusted_facts (
|
2 | 2 | TargetSpec $targets,
|
3 | 3 | Peadm::SingleTargetSpec $master_host,
|
4 |
| - Boolean $autosign = false, |
5 | 4 | ) {
|
6 | 5 |
|
7 | 6 | # Convert input into array of Targets
|
8 | 7 | $all_targets = peadm::get_targets($targets)
|
9 | 8 | $master_target = peadm::get_targets($master_host, 1)
|
10 | 9 |
|
| 10 | + # This plan doesn't work over the orchestrator due to certificates being revoked. |
| 11 | + $all_targets.peadm::fail_on_transport('pcp') |
| 12 | + |
| 13 | + $master_certname = run_task('peadm::trusted_facts', $master_target)[0]['certname'] |
11 | 14 | $certdata = run_task('peadm::trusted_facts', $all_targets).reduce({}) |$memo,$result| {
|
12 | 15 | # Keep the the OID-form trusted fact key/value pairs. If we accidentally
|
13 | 16 | # include an OID and also a shortname that resolves to the same OID,
|
14 | 17 | # there'll be a problem trying to sign the cert.
|
15 | 18 | $memo + { $result.target => ($result.value + {
|
16 | 19 | 'extensions' => ($result['extensions'].filter |$k,$v| {
|
17 |
| - $k =~ /^1\.3\.6\.1\.4\.1\.34380\.1/ |
| 20 | + $k =~ /^1\.3\.6\.1\.4\.1\.34380\.1(?!\.3\.39)/ |
18 | 21 | })
|
19 | 22 | })}
|
20 | 23 | }
|
|
34 | 37 | )
|
35 | 38 |
|
36 | 39 | run_command("${pserver} ca clean --certname ${certdata[$target]['certname']}", $master_target)
|
37 |
| - run_command("${puppet} ssl clean --certname ${certdata[$target]['certname']}", $target) |
38 |
| - run_command("${puppet} ssl submit_request --certname ${certdata[$target]['certname']}", $target) |
39 |
| - |
40 |
| - ctrl::sleep(2) # some lag sometimes before the cert is available to sign |
41 | 40 |
|
42 |
| - if !$autosign { |
43 |
| - run_command("${pserver} ca sign --certname ${certdata[$target]['certname']}", $master_target) |
| 41 | + # The procedure for regenerating an agent's cert |
| 42 | + if ($certdata[$target]['certname'] != $master_certname) { |
| 43 | + run_command("${puppet} ssl clean --certname ${certdata[$target]['certname']}", $target) |
| 44 | + run_command("${puppet} ssl submit_request --certname ${certdata[$target]['certname']}", $target) |
| 45 | + ctrl::sleep(2) # some lag sometimes before the cert is available to sign |
| 46 | + run_command(@("HEREDOC"/L), $master_target) |
| 47 | + ${pserver} ca sign --certname ${certdata[$target]['certname']} || \ |
| 48 | + ${pserver} ca list --certname ${certdata[$target]['certname']} \ |
| 49 | + | HEREDOC |
| 50 | + run_command("${puppet} ssl download_cert --certname ${certdata[$target]['certname']}", $target) |
44 | 51 | }
|
45 | 52 |
|
46 |
| - run_command("${puppet} ssl download_cert --certname ${certdata[$target]['certname']}", $target) |
| 53 | + # The procedure for regenerating the master's cert |
| 54 | + else { |
| 55 | + $alt_names_flag = $certdata[$target]['dns-alt-names'] ? { |
| 56 | + undef => '', |
| 57 | + default => "--subject-alt-names ${certdata[$target]['dns-alt-names'].join(',')}", |
| 58 | + } |
| 59 | + |
| 60 | + run_command(@("HEREDOC"/L), $target) |
| 61 | + rm -f \ |
| 62 | + /etc/puppetlabs/puppet/ssl/certs/${certdata[$target]['certname']}.pem \ |
| 63 | + /etc/puppetlabs/puppet/ssl/private_keys/${certdata[$target]['certname']}.pem \ |
| 64 | + /etc/puppetlabs/puppet/ssl/public_keys/${certdata[$target]['certname']}.pem \ |
| 65 | + /etc/puppetlabs/puppet/ssl/certificate_requests/${certdata[$target]['certname']}.pem \ |
| 66 | + | HEREDOC |
| 67 | + run_task('service', $target, {action => 'stop', name => 'pe-puppetserver'}) |
| 68 | + run_command(@("HEREDOC"/L), $target) |
| 69 | + ${pserver} ca generate \ |
| 70 | + --certname ${certdata[$target]['certname']} \ |
| 71 | + ${alt_names_flag} \ |
| 72 | + --ca-client \ |
| 73 | + | HEREDOC |
| 74 | + run_task('service', $target, {action => 'start', name => 'pe-puppetserver'}) |
| 75 | + } |
47 | 76 | }
|
48 | 77 |
|
49 | 78 | }
|
0 commit comments