|
| 1 | +plan peadm::misc::upgrade_trusted_facts ( |
| 2 | + TargetSpec $targets, |
| 3 | + Peadm::SingleTargetSpec $master_host, |
| 4 | + Boolean $autosign = false, |
| 5 | +) { |
| 6 | + |
| 7 | + # Convert input into array of Targets |
| 8 | + $all_targets = peadm::get_targets($targets) |
| 9 | + $master_target = peadm::get_targets($master_host, 1) |
| 10 | + |
| 11 | + $certdata = run_task('peadm::trusted_facts', $all_targets).reduce({}) |$memo,$result| { |
| 12 | + # Keep the the OID-form trusted fact key/value pairs. If we accidentally |
| 13 | + # include an OID and also a shortname that resolves to the same OID, |
| 14 | + # there'll be a problem trying to sign the cert. |
| 15 | + $memo + { $result.target => ($result.value + { |
| 16 | + 'extensions' => ($result['extensions'].filter |$k,$v| { |
| 17 | + $k =~ /^1\.3\.6\.1\.4\.1\.34380\.1/ |
| 18 | + }) |
| 19 | + })} |
| 20 | + } |
| 21 | + |
| 22 | + $pserver = '/opt/puppetlabs/bin/puppetserver' |
| 23 | + $puppet = '/opt/puppetlabs/bin/puppet' |
| 24 | + |
| 25 | + $upgrade_results = $all_targets.map |$target| { |
| 26 | + $new_trusted = $certdata[$target]['extensions'] + { |
| 27 | + peadm::oid('peadm_role') => $certdata[$target]['extensions'][peadm::oid('pp_application')], |
| 28 | + peadm::oid('peadm_availability_group') => $certdata[$target]['extensions'][peadm::oid('pp_cluster')], |
| 29 | + } |
| 30 | + |
| 31 | + run_plan('peadm::util::insert_csr_extensions', $target, |
| 32 | + extensions => $new_trusted, |
| 33 | + merge => false, |
| 34 | + ) |
| 35 | + |
| 36 | + 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 | + |
| 42 | + if !$autosign { |
| 43 | + run_command("${pserver} ca sign --certname ${certdata[$target]['certname']}", $master_target) |
| 44 | + } |
| 45 | + |
| 46 | + run_command("${puppet} ssl download_cert --certname ${certdata[$target]['certname']}", $target) |
| 47 | + } |
| 48 | + |
| 49 | +} |
0 commit comments