Skip to content

Commit d9df038

Browse files
committed
Ensure using correct primary
When reusing failed infrastructure components they may be configured for a different primary then is current and have an old certificate revacation list. Commit ensures that agent configuration is updated for the current primary and fetches CRL from that primary. Includes a little cleanup lifted from the add_compiler plan.
1 parent b33a511 commit d9df038

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

plans/add_replica.pp

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@
2626
$replica_target = peadm::get_targets($replica_host, 1)
2727
$replica_postgresql_target = peadm::get_targets($replica_postgresql_host, 1)
2828

29+
run_command('systemctl stop puppet.service', peadm::flatten_compact([
30+
$primary_target,
31+
$replica_postgresql_target,
32+
]))
33+
2934
$certdata = run_task('peadm::cert_data', $primary_target).first.value
3035
$primary_avail_group_letter = $certdata['extensions'][peadm::oid('peadm_availability_group')]
3136
$replica_avail_group_letter = $primary_avail_group_letter ? { 'A' => 'B', 'B' => 'A' }
@@ -51,27 +56,22 @@
5156
# pe-puppetdb-pe-puppetdb-map <replacement-replica-fqdn> pe-puppetdb
5257
# pe-puppetdb-pe-puppetdb-migrator-map <replacement-replica-fqdn> pe-puppetdb-migrator
5358
apply($replica_postgresql_target) {
54-
service { 'puppet':
55-
ensure => stopped,
56-
before => File_line['puppetdb-map', 'migrator-map'],
57-
}
58-
59-
file_line { 'puppetdb-map':
59+
file_line { 'pe-puppetdb-pe-puppetdb-map':
6060
path => '/opt/puppetlabs/server/data/postgresql/11/data/pg_ident.conf',
6161
line => "pe-puppetdb-pe-puppetdb-map ${replica_target.peadm::certname()} pe-puppetdb",
6262
}
63-
64-
file_line { 'migrator-map':
63+
file_line { 'pe-puppetdb-pe-puppetdb-migrator-map':
6564
path => '/opt/puppetlabs/server/data/postgresql/11/data/pg_ident.conf',
6665
line => "pe-puppetdb-pe-puppetdb-migrator-map ${replica_target.peadm::certname()} pe-puppetdb-migrator",
6766
}
68-
69-
service { 'pe-postgresql':
70-
ensure => running,
71-
subscribe => File_line['puppetdb-map', 'migrator-map'],
67+
file_line { 'pe-puppetdb-pe-puppetdb-read-map':
68+
path => '/opt/puppetlabs/server/data/postgresql/11/data/pg_ident.conf',
69+
line => "pe-puppetdb-pe-puppetdb-read-map ${replica_target.peadm::certname()} pe-puppetdb-read",
7270
}
7371
}
7472

73+
run_command('systemctl reload pe-postgresql.service', $replica_postgresql_target)
74+
7575
run_plan('peadm::util::update_classification', $primary_target,
7676
server_a_host => $replica_avail_group_letter ? { 'A' => $replica_host, default => undef },
7777
server_b_host => $replica_avail_group_letter ? { 'B' => $replica_host, default => undef },
@@ -90,8 +90,12 @@
9090
legacy => true,
9191
)
9292

93-
# start puppet service on postgresql host
94-
run_command('systemctl start puppet.service', $replica_postgresql_target)
93+
# start puppet service
94+
run_command('systemctl start puppet.service', peadm::flatten_compact([
95+
$primary_target,
96+
$replica_postgresql_target,
97+
$replica_target
98+
]))
9599

96100
return("Added replica ${replica_target}")
97101
}

plans/subplans/modify_certificate.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
($desired_alt_names == $existing_alt_names) and
3535
($desired_exts.all |$key,$val| { $existing_exts[$key] == $val }) and
3636
!($remove_extensions.any |$key| { $key in $existing_exts.keys }) and
37+
!$certdata['certificate-revoked'] and
3738
!$force_regenerate)
3839
{
3940
out::message("${certname} already has requested modifications; certificate will not be re-issued")

plans/subplans/prepare_agent.pp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@
2929
"main:certname=${agent_target.peadm::certname()}",
3030
],
3131
)
32+
} else {
33+
run_command('systemctl stop puppet.service', $agent_target)
34+
out::message('Ensuring node is set to query current primary for Puppet Agent operations')
35+
run_command("/opt/puppetlabs/bin/puppet config set --section main server ${primary_target.peadm::certname()}", $agent_target)
36+
run_command('/opt/puppetlabs/bin/puppet config delete --section agent server_list', $agent_target)
3237
}
3338

3439
# Ensures scenarios where agent was pre-installed but never on-boarding and

0 commit comments

Comments
 (0)