Skip to content

Commit b03ac49

Browse files
committed
Make get_peadm_config more robust
Specifically, make it handle situations where PuppetDB queries return multiple results for server() queries, which could happen in the event a database has been backed up on one cluster, and restored into another.
1 parent 3b1821a commit b03ac49

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

tasks/get_peadm_config.rb

+13-6
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,19 @@ def config
1818
# Compute values
1919
primary = groups.pinned('PE Master')
2020
replica = groups.pinned('PE HA Replica')
21-
server_a = server('puppet/server', 'A')
22-
server_b = server('puppet/server', 'B')
21+
server_a = server('puppet/server', 'A', [primary, replica].compact)
22+
server_b = server('puppet/server', 'B', [primary, replica].compact)
2323
primary_letter = primary.eql?(server_a) ? 'A' : 'B'
2424
replica_letter = primary_letter.eql?('A') ? 'B' : 'A'
25+
26+
configured_postgresql_servers = [
27+
groups.dig("PE Primary A", 'config_data', 'puppet_enterprise::profile::puppetdb', 'database_host'),
28+
groups.dig("PE Primary B", 'config_data', 'puppet_enterprise::profile::puppetdb', 'database_host'),
29+
].compact
30+
2531
postgresql = {
26-
'A' => server('puppet/puppetdb-database', 'A'),
27-
'B' => server('puppet/puppetdb-database', 'B'),
32+
'A' => server('puppet/puppetdb-database', 'A', configured_postgresql_servers),
33+
'B' => server('puppet/puppetdb-database', 'B', configured_postgresql_servers),
2834
}
2935

3036
# Build and return the task output
@@ -78,10 +84,11 @@ def compilers
7884
end
7985
end
8086

81-
def server(role, letter)
87+
def server(role, letter, certname_array)
8288
query = 'inventory[certname] { '\
8389
' trusted.extensions."1.3.6.1.4.1.34380.1.1.9812" = "' + role + '" and ' \
84-
' trusted.extensions."1.3.6.1.4.1.34380.1.1.9813" = "' + letter + '"}'
90+
' trusted.extensions."1.3.6.1.4.1.34380.1.1.9813" = "' + letter + '" and ' \
91+
' certname in ' + certname_array.to_json + '}'
8592

8693
server = pdb_query(query).map { |n| n['certname'] }
8794
raise "More than one #{letter} #{role} server found!" unless server.size <= 1

0 commit comments

Comments
 (0)