Skip to content

Commit dedafb4

Browse files
authored
Merge pull request #110 from umnmsi/trusted_facts
Allow trusted facts to be derived from node name
2 parents 47e909c + e686db4 commit dedafb4

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

lib/puppet/catalog-diff/compilecatalog.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ class CompileCatalog
1212

1313
attr_reader :node_name
1414

15-
def initialize(node_name, save_directory, server, certless, catalog_from_puppetdb, puppetdb, puppetdb_tls_cert, puppetdb_tls_key, puppetdb_tls_ca, puppetserver_tls_cert, puppetserver_tls_key, puppetserver_tls_ca)
15+
def initialize(node_name, save_directory, server, certless, catalog_from_puppetdb, puppetdb, puppetdb_tls_cert, puppetdb_tls_key, puppetdb_tls_ca, puppetserver_tls_cert, puppetserver_tls_key, puppetserver_tls_ca, derive_trusted_facts)
1616
@node_name = node_name
1717
catalog = if catalog_from_puppetdb
1818
get_catalog_from_puppetdb(node_name, server, puppetdb, puppetdb_tls_cert, puppetdb_tls_key, puppetdb_tls_ca)
1919
else
20-
catalog = compile_catalog(node_name, server, certless, puppetserver_tls_cert, puppetserver_tls_key, puppetserver_tls_ca)
20+
catalog = compile_catalog(node_name, server, certless, puppetserver_tls_cert, puppetserver_tls_key, puppetserver_tls_ca, derive_trusted_facts)
2121
clean_sensitive_parameters!(catalog)
2222
clean_nested_sensitive_parameters!(catalog)
2323
catalog
@@ -68,7 +68,7 @@ def get_catalog_from_puppetdb(node_name, server, puppetdb, puppetdb_tls_cert, pu
6868
convert_pdb(catalog)
6969
end
7070

71-
def compile_catalog(node_name, server, certless, tls_cert, tls_key, tls_ca)
71+
def compile_catalog(node_name, server, certless, tls_cert, tls_key, tls_ca, derive_trusted_facts)
7272
Puppet.debug("Compiling catalog for #{node_name}")
7373
server, environment = server.split('/')
7474
environment ||= lookup_environment(node_name)
@@ -92,6 +92,18 @@ def compile_catalog(node_name, server, certless, tls_cert, tls_key, tls_ca)
9292
prefer_requested_environment: true,
9393
},
9494
}
95+
if derive_trusted_facts
96+
body['trusted_facts'] = {
97+
values: {
98+
domain: node_name.split('.')[1..],
99+
certname: node_name,
100+
external: {},
101+
hostname: node_name.split('.')[0],
102+
extensions: {},
103+
authenticated: 'remote',
104+
},
105+
}
106+
end
95107
else
96108
endpoint = "/puppet/v3/catalog/#{node_name}?environment=#{environment}"
97109
end

lib/puppet/face/catalog/diff.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@
123123
default_to { puppetdb_url }
124124
end
125125

126+
option '--derive_trusted_facts' do
127+
summary 'Derive trusted facts from node name when using certless API. When disabled, Puppet will use trusted facts from PuppetDB.'
128+
end
129+
126130
description <<-EOT
127131
Prints the differences between catalogs compiled by different puppet master to help
128132
during migrating to a new Puppet version.
@@ -226,7 +230,8 @@
226230
old_puppetserver_tls_key: options[:old_puppetserver_tls_key],
227231
old_puppetserver_tls_ca: options[:old_puppetserver_tls_ca],
228232
new_puppetdb: options[:new_puppetdb],
229-
node_list: options[:node_list]
233+
node_list: options[:node_list],
234+
derive_trusted_facts: options[:derive_trusted_facts]
230235
)
231236
diff_output = Puppet::Face[:catalog, '0.0.1'].diff(old_catalogs, new_catalogs, options)
232237
nodes = diff_output

lib/puppet/face/catalog/pull.rb

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@
9393
summary 'A manual list of nodes to run catalog diffs against'
9494
end
9595

96+
option '--derive_trusted_facts' do
97+
summary 'Derive trusted facts from node name when using certless API. When disabled, Puppet will use trusted facts from PuppetDB.'
98+
end
99+
96100
description <<-EOT
97101
This action is used to seed a series of catalogs from two servers
98102
EOT
@@ -147,22 +151,25 @@
147151
puppetdb_tls_ca: options[:old_puppetdb_tls_ca],
148152
puppetserver_tls_cert: options[:old_puppetserver_tls_cert],
149153
puppetserver_tls_key: options[:old_puppetserver_tls_key],
150-
puppetserver_tls_ca: options[:old_puppetserver_tls_ca]
154+
puppetserver_tls_ca: options[:old_puppetserver_tls_ca],
155+
derive_trusted_facts: options[:derive_trusted_facts]
151156
)
152157
new_server = Puppet::Face[:catalog, '0.0.1'].seed(
153158
catalog2, node_name,
154159
master_server: options[:new_server],
155160
certless: options[:certless],
156161
catalog_from_puppetdb: options[:new_catalog_from_puppetdb],
157-
puppetdb: options[:new_puppetdb]
162+
puppetdb: options[:new_puppetdb],
163+
derive_trusted_facts: options[:derive_trusted_facts]
158164
)
159165
else
160166
new_server = Puppet::Face[:catalog, '0.0.1'].seed(
161167
catalog2, node_name,
162168
master_server: options[:new_server],
163169
certless: options[:certless],
164170
catalog_from_puppetdb: options[:new_catalog_from_puppetdb],
165-
puppetdb: options[:new_puppetdb]
171+
puppetdb: options[:new_puppetdb],
172+
derive_trusted_facts: options[:derive_trusted_facts]
166173
)
167174
old_server = Puppet::Face[:catalog, '0.0.1'].seed(
168175
catalog1, node_name,
@@ -175,7 +182,8 @@
175182
puppetdb_tls_ca: options[:old_puppetdb_tls_ca],
176183
puppetserver_tls_cert: options[:old_puppetserver_tls_cert],
177184
puppetserver_tls_key: options[:old_puppetserver_tls_key],
178-
puppetserver_tls_ca: options[:old_puppetserver_tls_ca]
185+
puppetserver_tls_ca: options[:old_puppetserver_tls_ca],
186+
derive_trusted_facts: options[:derive_trusted_facts]
179187
)
180188
end
181189
mutex.synchronize { compiled_nodes + old_server[:compiled_nodes] }

lib/puppet/face/catalog/seed.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
default_to { localcacert }
5959
end
6060

61+
option '--derive_trusted_facts' do
62+
summary 'Derive trusted facts from node name when using certless API. When disabled, Puppet will use trusted facts from PuppetDB.'
63+
end
64+
6165
description <<-EOT
6266
This action is used to seed a series of catalogs to then be compared with diff
6367
EOT
@@ -109,7 +113,8 @@
109113
options[:puppetdb_tls_ca],
110114
options[:puppetserver_tls_cert],
111115
options[:puppetserver_tls_key],
112-
options[:puppetserver_tls_ca]
116+
options[:puppetserver_tls_ca],
117+
options[:derive_trusted_facts]
113118
)
114119
mutex.synchronize { compiled_nodes << node_name }
115120
rescue Exception => e

0 commit comments

Comments
 (0)