rspec-puppet-facts 1.9.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dbd52f624b211b89fe821e11bb4b0b06f027990544d3fcab0670ed43649dc04
4
- data.tar.gz: 590ab056e1834379ff220aa28bd0f84dd3190f52b9bca2d0621432c29c7333ec
3
+ metadata.gz: c6f2c4f366097ef9da38344e40bbc75661a8b7ea00ca6e58e03acaa8c3683ea3
4
+ data.tar.gz: 8e29a1c06d530ee7e435444a76a8e91db43b3b98701926077385cbb87e2dfb38
5
5
  SHA512:
6
- metadata.gz: ae3e87f28130b1729435a68bd58573e091a0be404e0c666f5eba49c319308374f183b5312d3336ea37a684764b100696d32970cc0d45b16fb404c5eef7f7b967
7
- data.tar.gz: 7c44c5f98f60b92b117129c52f1acedd4b355196db417267547be85cee91f261fe0703f3861b380360af1c2e75589bfb28084d29e8c90ad4cb736f3bfa1ccb7e
6
+ metadata.gz: 7b79b495755111113ace37d28d88e6c570527fb35c05b944c77cb8dc5853c2dc49dd96d79a703ff08059c33f5eea18bece24a4d6f855bacdb3def82825582758
7
+ data.tar.gz: 0fd818ffa5c6ffaec24505ca5d97bce55815e943e78ff91441e6ddd8c3632fff61d5dc310a9f676db27132a47bbf7164635cb6c3a1563c54659ced0ce43ba871
@@ -1,27 +1,28 @@
1
- ---
2
1
  language: ruby
3
2
  sudo: false
4
3
  cache: bundler
5
4
  script:
6
- - bundle exec rake spec
5
+ - bundle exec rake spec
6
+ - bundle exec rake puppet_versions:test
7
+ - bundle exec rake build
7
8
  rvm:
8
- - 1.8.7
9
- - 1.9.3
10
- - 2.0.0
11
- - 2.1.5
12
- env:
13
- - FACTER_GEM_VERSION="~> 1.6.0"
14
- - FACTER_GEM_VERSION="~> 1.7.0"
15
- - FACTER_GEM_VERSION="~> 2.0.0"
16
- - FACTER_GEM_VERSION="~> 2.1.0"
17
- - FACTER_GEM_VERSION="~> 2.2.0"
18
- - FACTER_GEM_VERSION="~> 2.3.0"
19
- - FACTER_GEM_VERSION="~> 2.4.0"
20
- - FACTER_GEM_VERSION="~> 2.0"
9
+ - 2.4
10
+ - 2.5
11
+ - 2.7
21
12
  matrix:
22
13
  fast_finish: true
23
- allow_failures:
24
- - rvm: 1.8.7
25
- - rvm: 1.9.3
14
+ include:
15
+ - rvm: 2.6
16
+ env: COVERAGE=true
26
17
  notifications:
27
18
  email: false
19
+ deploy:
20
+ provider: rubygems
21
+ api_key:
22
+ secure: EGvtHfBYUSjhZjLPGZHHH7Exsu9xyYSNlbI/F9SNRDmY568tBZs1Pw05Pr9dhUXajs3xXPkHQwMEBgNs2Rg2SPc6+dCyvabbNM2U58yj5R5D7+ZdUWC1APgjiDvBhm0N5hihmAnoBKPlmPKMh91OQwKI/8/GOhWAQaIZRnNBzMQ+gwHQ8xIkqt3unxJ/LtRybFDzTF5aMtIHrfE8kV08BLaKUzJptzj7Wt5Ms1zE/2UV1S7DhSvZnxWaWtNZwaQPo9NFhjHr5k3nLIoWi6Ge3khVSukZcAki9cR37Tjeyms5B10hp6jW5c6EgCDQp5VNcD/1LgtTs8fWI6mvTsa3YCyaQdVy2SvhUD88/CohFvLXbGcdkFFzwhPa57aCKazq14fh5epScRzAfGpJojkPcxdc5/fiuZiaPg+jmT/OMFqNjQW1C6m2S+VltlXVCyjT83Ri9J9/AEu708akErhz7XjcspxJL8//KVvS/3o4hjtoef1OXxRN+oh3VGwbEZSiqOmjxr6/AigaYsrWOTdz+OZa4fGYbUb9hMHnq314cjgGUMyzZ9tQN8v4mMZb1ZKZPuqrP6um1Y7WbHQJvwl3sXEUuDN68eyWp103M1nyma6hON4+F+r58kTuoWRmy06ZsaEjz57bFxdnDjB8It8V7pI0bcmfs/q5tMIPw6Gh14w=
23
+ gem: rspec-puppet-facts
24
+ on:
25
+ tags: true
26
+ repo: mcanevet/rspec-puppet-facts
27
+ all_branches: true
28
+ rvm: 2.6
@@ -1,3 +1,51 @@
1
+ ## 2020-08-04 - Release 2.0.0
2
+
3
+ - Require Ruby >= 2.4
4
+ - Automatically find the latest facter version in the database. Previously a
5
+ very slow and undeterministic approach was taken when an exact match of the
6
+ Facter version wasn't found.. The new approach is to take the closest version
7
+ that is still older than the specified version.
8
+ - Fix Amazon Linux 2 fact lookup
9
+ - Log which facts could not be found
10
+ - Remove json as a dependency
11
+
12
+ ## 2019-12-11 - Release 1.10.0
13
+ - Automatically select the default Facter version based on the Puppet version.
14
+ The available Puppet version is matched against a mapping of Puppet and
15
+ Facter versions included in the `puppet-agent` all-in-one packages to find
16
+ the most suitable Facter version.
17
+
18
+ ## 2019-07-31 - Release 1.9.6
19
+ - Suppress the warning message generated when the Augeas gem is not available.
20
+ - Searching through older Facter releases for a fact set that does not exist no
21
+ longer causes it to hang indefinitely.
22
+ - The `operatingsystemrelease` values are now correctly escaped when building
23
+ the FacterDB filters, allowing the use of `operatingsystemrelease` values
24
+ that contain special regular expression characters like parentheses.
25
+
26
+ ## 2019-07-29 - Release 1.9.5
27
+ - The default version of Facter to search for is now configurable with
28
+ `RSpec.configuration.default_facter_version`.
29
+ - When passing a `:supported_os` hash to `on_supported_os()`, single
30
+ `operatingsystemrelease` values can now be specified as a String rather than
31
+ an Array with a single String.
32
+ - Dependency on the `mcollective-client` gem removed. The `mco_version` fact
33
+ will now optionally be set if the gem is installed.
34
+ - The fact names can now be provided to tests as Strings instead of Symbols by
35
+ setting `RSpec.configuration.facterdb_string_keys` to `true`.
36
+ - Dropped support for Ruby < 2.1.0
37
+
38
+ ## 2019-03-22 - Release 1.9.4
39
+ - Take two on getting rubygems autodeploy going. So much for docs,
40
+ looking at other projects for this one.
41
+ ## 2019-03-22 - Release 1.9.3
42
+ - Various CI updates - [Garrett Honeycutt](https://github.com/ghoneycutt/)
43
+ - Symbolize hash keys in `register_custom_fact`
44
+ [https://github.com/mcanevet/rspec-puppet-facts/pull/77](https://github.com/mcanevet/rspec-puppet-facts/pull/77)
45
+
46
+ ## 2018-10-24 - Release 1.9.2
47
+ - Catch the right `LoadError` on missing augeas gem. Thanks to [baurmatt](https://github.com/baurmatt) for the quick fix, and [rodjek](https://github.com/rodjek) for dealing with the testing
48
+
1
49
  ## 2018-10-24 - Release 1.9.1
2
50
  - Do not rely on features of Augeas because Puppet 6
3
51
 
data/Gemfile CHANGED
@@ -7,9 +7,3 @@ if facterversion = ENV['FACTER_GEM_VERSION']
7
7
  else
8
8
  gem 'facter', :require => false
9
9
  end
10
-
11
- platforms :ruby_18, :ruby_19 do
12
- gem 'json', '~> 1.0'
13
- gem 'json_pure', '~> 1.0'
14
- gem 'tins', '~> 1.6.0'
15
- end
data/README.md CHANGED
@@ -7,7 +7,7 @@ rspec-puppet-facts
7
7
  [![Gem Downloads](https://img.shields.io/gem/dt/rspec-puppet-facts.svg)](https://rubygems.org/gems/rspec-puppet-facts)
8
8
  [![Coverage Status](https://img.shields.io/coveralls/mcanevet/rspec-puppet-facts.svg)](https://coveralls.io/r/mcanevet/rspec-puppet-facts?branch=master)
9
9
 
10
- Based on an original idea from [apenney](https://github.com/apenney/puppet_facts/), this gem provides a method of running your [rspec-puppet](https://github.com/rodjek/rspec-puppet) tests against the facts for all your supported operating systems (provided by [facterdb](https://github.com/camptocamp/facterdb). This simplifies unit testing because you don't need to specify the facts yourself.
10
+ Based on an original idea from [apenney](https://github.com/apenney/puppet_facts/), this gem provides a method of running your [rspec-puppet](https://github.com/rodjek/rspec-puppet) tests against the facts for all your supported operating systems (provided by [facterdb](https://github.com/camptocamp/facterdb)). This simplifies unit testing because you don't need to specify the facts yourself.
11
11
 
12
12
  ## Installation
13
13
 
@@ -16,7 +16,7 @@ If you're using Bundler to manage gems in your module repository, install `rspec
16
16
  1. Add the following line to your `Gemfile`:
17
17
 
18
18
  ```ruby
19
- gem 'rspec-puppet-facts', '~> 1.7', :require => false
19
+ gem 'rspec-puppet-facts', :require => false
20
20
  ```
21
21
 
22
22
  2. Run `bundle install`.
@@ -64,12 +64,44 @@ describe 'myclass::debian' do
64
64
  ],
65
65
  }
66
66
 
67
- on_supported_os(test_on).each do |os, facts|
68
- let (:facts) { facts }
67
+ on_supported_os(test_on).each do |os, os_facts|
68
+ let (:facts) { os_facts }
69
69
  it { is_expected.to compile.with_all_deps }
70
70
  end
71
71
  end
72
72
  ```
73
+ Ruby 1.9 and later:
74
+ ```ruby
75
+ require 'spec_helper'
76
+
77
+ describe 'myclass::raspbian' do
78
+ test_on = {
79
+ supported_os: [
80
+ {
81
+ 'operatingsystem' => 'Debian',
82
+ 'operatingsystemrelease' => ['10', '9', '8'],
83
+ },
84
+ ],
85
+ }
86
+ on_supported_os(test_on).each do |os, os_facts|
87
+ let(:facts) { os_facts }
88
+ it { is_expected.to compile.with_all_deps }
89
+ end
90
+ end
91
+ ```
92
+
93
+ ## Specifying a default Facter version
94
+
95
+ By default, `os_supported_os` will return the facts for the version of Facter
96
+ that it has loaded (usually this is Facter 2.5.1). This behaviour can be
97
+ overridden by setting the `default_facter_version` RSpec setting in your
98
+ `spec/spec_helper.rb` file.
99
+
100
+ ```ruby
101
+ RSpec.configure do |c|
102
+ c.default_facter_version = '3.14.0'
103
+ end
104
+ ```
73
105
 
74
106
  ## Usage
75
107
 
@@ -126,17 +158,17 @@ require 'spec_helper'
126
158
 
127
159
  describe 'myclass' do
128
160
 
129
- on_supported_os.each do |os, facts|
161
+ on_supported_os.each do |os, os_facts|
130
162
  context "on #{os}" do
131
163
  let(:facts) do
132
- facts
164
+ os_facts
133
165
  end
134
166
 
135
167
  it { is_expected.to compile.with_all_deps }
136
168
  ...
137
169
 
138
170
  # If you need any to specify any operating system specific tests
139
- case facts[:osfamily]
171
+ case os_facts[:osfamily]
140
172
  when 'Debian'
141
173
  ...
142
174
  else
@@ -147,6 +179,56 @@ describe 'myclass' do
147
179
  end
148
180
  ```
149
181
 
182
+ When using roles and profiles to manage a heterogeneous IT estate, you can test a profile that supports several OSes with many `let(:facts)` as long as each is in its own context:
183
+ ```ruby
184
+ require 'spec_helper'
185
+
186
+ describe 'profiles::packagerepos' do
187
+ context 'Raspbian tests' do # We manage hundreds of desk-mounted Pis
188
+ raspbian = {
189
+ hardwaremodels: ['armv7l'],
190
+ supported_os: [
191
+ {
192
+ 'operatingsystem' => 'Debian',
193
+ 'operatingsystemrelease' => ['10', '9', '8'],
194
+ },
195
+ ],
196
+ }
197
+ on_supported_os(raspbian).each do |os, os_facts|
198
+ let(:facts) do
199
+ os_facts
200
+ end
201
+
202
+ context "#{os} with defaults" do
203
+ it { is_expected.to compile }
204
+ # more tests ...
205
+ end
206
+ end
207
+ end
208
+ context 'Ubuntu tests' do # And also a fleet of Ubuntu desktops
209
+ ubuntu = {
210
+ supported_os: [
211
+ {
212
+ 'operatingsystem' => 'Ubuntu',
213
+ 'operatingsystemrelease' => ['18.04', '16.04'],
214
+ },
215
+ ],
216
+ }
217
+
218
+ on_supported_os(ubuntu).each do |os, os_facts|
219
+ let(:facts) do
220
+ os_facts
221
+ end
222
+
223
+ context "#{os} with defaults" do
224
+ it { is_expected.to compile }
225
+ # more tests ...
226
+ end
227
+ end
228
+ end
229
+ end
230
+ ```
231
+
150
232
  ### Testing a type or provider
151
233
 
152
234
  Use `on_supported_os` in the same way for your type and provider unit tests.
@@ -194,17 +276,17 @@ require 'spec_helper'
194
276
 
195
277
  describe 'mytype' do
196
278
 
197
- on_supported_os.each do |os, facts|
279
+ on_supported_os.each do |os, os_facts|
198
280
  context "on #{os}" do
199
281
  let(:facts) do
200
- facts
282
+ os_facts
201
283
  end
202
284
 
203
285
  it { should be_valid_type }
204
286
  ...
205
287
 
206
288
  # If you need to specify any operating system specific tests
207
- case facts[:osfamily]
289
+ case os_facts[:osfamily]
208
290
  when 'Debian'
209
291
  ...
210
292
  else
@@ -262,10 +344,10 @@ require 'spec_helper'
262
344
 
263
345
  describe 'myfunction' do
264
346
 
265
- on_supported_os.each do |os, facts|
347
+ on_supported_os.each do |os, os_facts|
266
348
  context "on #{os}" do
267
349
  let(:facts) do
268
- facts
350
+ os_facts
269
351
  end
270
352
 
271
353
  it { should run.with_params('something').and_return('a value') }
@@ -294,12 +376,12 @@ To override fact values and include additional facts in your tests, merge values
294
376
  require 'spec_helper'
295
377
 
296
378
  describe 'myclass' do
297
- on_supported_os.each do |os, facts|
379
+ on_supported_os.each do |os, os_facts|
298
380
  context "on #{os}" do
299
381
 
300
382
  # Add the 'foo' fact with the value 'bar' to the tests
301
383
  let(:facts) do
302
- facts.merge({
384
+ os_facts.merge({
303
385
  :foo => 'bar',
304
386
  })
305
387
  end
@@ -355,9 +437,9 @@ To do this, pass a lambda as the value for the custom fact. The lambda is passed
355
437
  add_custom_fact :root_home, lambda { |os,facts| "/tmp/#{facts['hostname']}" }
356
438
  ```
357
439
 
358
- ### Suppling Custom External Facts through FacterDB
440
+ ### Supplying Custom External Facts through FacterDB
359
441
  Rspec-puppet-facts uses a gem called facterdb that contains many fact sets of various combinations that are pre generated. Rspec-puppet-facts queries
360
- facterdb to pull out a specific fact set to use when testing.
442
+ facterdb to pull out a specific fact set to use when testing.
361
443
 
362
444
  The default facts are great for many things but there will be times when you need to have custom
363
445
  fact sets that only make sense in your environment or might contain sensitive information.
@@ -366,7 +448,7 @@ To supply external facts to facterdb just set the `FACTERDB_SEARCH_PATHS` enviro
366
448
  paths to your facts.
367
449
 
368
450
  When separating paths please use the default path separator character supported by your OS.
369
- * Unix/Linux/OSX = `:`
451
+ * Unix/Linux/OSX = `:`
370
452
  * Windows = `;`
371
453
 
372
454
  This means you will need to supply your own fact sets in addition to the ones contained in facterdb.
@@ -422,7 +504,7 @@ ENV['FACTERDB_SEARCH_PATHS'] = custom_facts
422
504
  ```
423
505
  ## Running your tests
424
506
 
425
- For most cases, there is no change to how you run your tests. Running `rake spec` will run all the tests against the facts for all the supported operating systems.
507
+ For most cases, there is no change to how you run your tests. Running `rake spec` will run all the tests against the facts for all the supported operating systems. If you are developing a module using the [Puppet Development Kit](https://puppet.com/docs/pdk/1.x/pdk_install.html), `pdk test unit` will run all your tests against the supported operating systems listed in `metadata.json`.
426
508
 
427
509
  If you want to run the tests against the facts for specific operating systems, you can provide a filter in the `SPEC_FACTS_OS` environment variable and only the supported operating systems whose name starts with the specified filter will be used.
428
510
 
data/Rakefile CHANGED
@@ -1,3 +1,7 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ PUPPET_VERSIONS_PATH = File.join(__dir__, 'ext', 'puppet_agent_components.json')
4
+
1
5
  begin
2
6
  require 'rspec/core/rake_task'
3
7
  require 'yard'
@@ -12,3 +16,34 @@ task :dump_commit do
12
16
  puts "############ Commits since #{last_tag} ######"
13
17
  puts `git log --pretty=format:"- %s" #{last_tag}..HEAD`
14
18
  end
19
+
20
+ namespace :puppet_versions do
21
+ task :update do
22
+ require 'net/http'
23
+ require 'net/https'
24
+ require 'uri'
25
+
26
+ uri = URI.parse('https://forgeapi.puppet.com/private/versions/puppet-agent')
27
+ http = Net::HTTP.new(uri.host, uri.port)
28
+ http.use_ssl = uri.scheme == 'https'
29
+
30
+ request = Net::HTTP::Get.new(uri.request_uri)
31
+ response = http.request(request)
32
+ raise unless response.is_a?(Net::HTTPSuccess)
33
+
34
+ File.open(PUPPET_VERSIONS_PATH, 'wb:UTF-8') do |fd|
35
+ fd.write(response.body)
36
+ end
37
+ end
38
+
39
+ task :test do
40
+ Rake::Task['puppet_versions:update'].invoke
41
+
42
+ output = `git status --porcelain #{PUPPET_VERSIONS_PATH}`
43
+ unless output.strip.empty?
44
+ $stderr.puts "#{PUPPET_VERSIONS_PATH} is out of date."
45
+ $stderr.puts 'Run the puppet_versions:update task to update it and commit the changes.'
46
+ raise
47
+ end
48
+ end
49
+ end
@@ -0,0 +1 @@
1
+ {"1.10.6":{"puppet":"4.10.6","facter":"3.6.6","hiera":"3.3.2","leatherman":"0.12.1","cpp-hocon":"0.1.4","marionette-collective":"2.10.5","cpp-pcp-client":"1.5.3","pxp-agent":"1.5.4","augeas":"1.4.0","curl":"7.51.0","ruby-2.1.9":"2.1.9","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.20","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.7","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"1.10.7":{"puppet":"4.10.7","facter":"3.6.7","hiera":"3.3.2","leatherman":"0.12.2","cpp-hocon":"0.1.4","marionette-collective":"2.10.5","cpp-pcp-client":"1.5.4","pxp-agent":"1.5.5","augeas":"1.4.0","curl":"7.51.0","ruby-2.1.9":"2.1.9","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.20","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.7","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"1.10.8":{"puppet":"4.10.8","facter":"3.6.7","hiera":"3.3.2","leatherman":"0.12.2","cpp-hocon":"0.1.4","marionette-collective":"2.10.5","cpp-pcp-client":"1.5.4","pxp-agent":"1.5.5","augeas":"1.4.0","curl":"7.51.0","ruby-2.1.9":"2.1.9","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.20","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.7","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"1.10.9":{"puppet":"4.10.9","facter":"3.6.8","hiera":"3.3.2","leatherman":"0.12.2","cpp-hocon":"0.1.4","marionette-collective":"2.10.6","cpp-pcp-client":"1.5.4","pxp-agent":"1.5.5","augeas":"1.4.0","ruby-2.1.9":"2.1.9","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.20","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","libedit":"20150325-3.1"},"1.10.10":{"puppet":"4.10.10","facter":"3.6.9","hiera":"3.3.2","leatherman":"0.12.3","cpp-hocon":"0.1.4","marionette-collective":"2.10.6","cpp-pcp-client":"1.5.5","pxp-agent":"1.5.6","augeas":"1.4.0","curl":"7.57.0","ruby-2.1.9":"2.1.9","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.20","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"1.10.11":{"facter-source":"3.6.9-21-gecf783f","leatherman-source":"0.12.3-3-g784520b","cpp-hocon-source":"0.1.4","puppet-runtime":"201804040","augeas":"1.4.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"1.10.12":{"facter-source":"3.6.10","leatherman-source":"0.12.4","cpp-hocon-source":"0.1.4","puppet-runtime":"201804040","augeas":"1.4.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"1.10.13":{"facter-source":"3.6.10","leatherman-source":"0.12.4","cpp-hocon-source":"0.1.4","puppet-runtime":"201806040","augeas":"1.4.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"1.10.14":{"facter-source":"3.6.10","leatherman-source":"0.12.4","cpp-hocon-source":"0.1.4","puppet-runtime":"201806040","augeas":"1.4.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"1.10.15":{"puppet":"4.10.13","facter":"3.6.11","hiera":"3.3.4","leatherman":"0.12.4","cpp-hocon":"0.1.4","marionette-collective":"2.10.6","cpp-pcp-client":"1.5.8","pxp-agent":"1.5.8","puppet-runtime":"201812140","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.4.0","curl":"7.62.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.1.0":{"puppet":"5.1.0","facter":"3.8.0","hiera":"3.4.0","leatherman":"1.0.0","cpp-hocon":"0.1.5","marionette-collective":"2.11.2","cpp-pcp-client":"1.5.3","pxp-agent":"1.6.1","augeas":"1.8.0","curl":"7.51.0","ruby-2.4.1":"2.4.1","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.24","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.7","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"5.2.0":{"puppet":"5.2.0","facter":"3.9.0","hiera":"3.4.1","leatherman":"1.2.1","cpp-hocon":"0.1.5","marionette-collective":"2.11.2","cpp-pcp-client":"1.5.4","pxp-agent":"1.7.0","libwhereami":"0.1.1","augeas":"1.8.1","curl":"7.55.1","ruby-2.4.1":"2.4.1","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.7","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"5.3.0":{"puppet":"5.3.0","facter":"3.9.1","hiera":"3.4.2","leatherman":"1.2.1","cpp-hocon":"0.1.5","marionette-collective":"2.11.3","cpp-pcp-client":"1.5.4","pxp-agent":"1.8.0","libwhereami":"0.1.2","augeas":"1.8.1","curl":"7.55.1","ruby-2.4.1":"2.4.1","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"5.3.1":{"puppet":"5.3.1","facter":"3.9.2","hiera":"3.4.2","leatherman":"1.2.1","cpp-hocon":"0.1.5","marionette-collective":"2.11.3","cpp-pcp-client":"1.5.4","pxp-agent":"1.8.0","libwhereami":"0.1.2","augeas":"1.8.1","curl":"7.55.1","ruby-2.4.1":"2.4.1","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"5.3.2":{"puppet":"5.3.2","facter":"3.9.2","hiera":"3.4.2","leatherman":"1.2.1","cpp-hocon":"0.1.5","marionette-collective":"2.11.3","cpp-pcp-client":"1.5.4","pxp-agent":"1.8.0","libwhereami":"0.1.2","augeas":"1.8.1","curl":"7.55.1","ruby-2.4.1":"2.4.1","ruby-stomp":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18"},"5.3.3":{"puppet":"5.3.3","facter":"3.9.3","hiera":"3.4.2","leatherman":"1.2.1","cpp-hocon":"0.1.5","marionette-collective":"2.11.4","cpp-pcp-client":"1.5.4","pxp-agent":"1.8.0","libwhereami":"0.1.2","augeas":"1.8.1","curl":"7.56.1","ruby-2.4.2":"2.4.2","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.0","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2k","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"5.3.4":{"puppet":"5.3.4","facter":"3.9.4","hiera":"3.4.2","leatherman":"1.2.2","cpp-hocon":"0.1.5","marionette-collective":"2.11.4","cpp-pcp-client":"1.5.5","pxp-agent":"1.8.1","libwhereami":"0.1.3","augeas":"1.8.1","curl":"7.57.0","ruby-2.4.3":"2.4.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.2","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"1.33.4"},"5.3.5":{"puppet":"5.3.5","facter":"3.9.5","hiera":"3.4.2","leatherman":"1.2.2","cpp-hocon":"0.1.5","marionette-collective":"2.11.4","cpp-pcp-client":"1.5.5","pxp-agent":"1.8.2","libwhereami":"0.1.3","augeas":"1.8.1","curl":"7.58.0","ruby-2.4.3":"2.4.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.2","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"5.3.6":{"facter-source":"3.9.6","leatherman-source":"1.2.3","cpp-hocon-source":"0.1.5","puppet-runtime":"201804093"},"5.3.7":{"facter-source":"3.9.6","leatherman-source":"1.2.3","cpp-hocon-source":"0.1.5","puppet-runtime":"201806040","augeas":"1.8.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.3.8":{"facter-source":"3.9.6","leatherman-source":"1.2.3","cpp-hocon-source":"0.1.5","puppet-runtime":"201806040","augeas":"1.8.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.4.0":{"puppet":"5.4.0","facter":"3.10.0","hiera":"3.4.2","leatherman":"1.4.0","cpp-hocon":"0.1.5","marionette-collective":"2.11.4","cpp-pcp-client":"1.5.5","pxp-agent":"1.8.2","libwhereami":"0.2.0","augeas":"1.10.1","curl":"7.58.0","ruby-2.4.3":"2.4.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-net-ssh":"4.1.0","rubygem-hocon":"1.2.5","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.2","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.2","rubygem-gettext-setup":"0.28","ruby-shadow":"2.3.3","ruby-augeas":"0.5.0","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","libxml2":"2.9.4","libxslt":"1.1.29","virt-what":"1.14","dmidecode":"2.12","shellpath":"2015-09-18","ruby-selinux":"2.0.94"},"5.5.0":{"facter-source":"3.11.0","leatherman-source":"1.4.0","cpp-hocon-source":"0.1.5","puppet-runtime":"201803070","augeas":"1.4.0","curl":"7.58.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.1.9":"2.1.9","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp-1.3.3":"1.3.3","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.0","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-net-ssh":"4.1.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.5.1":{"facter-source":"3.11.1","leatherman-source":"1.4.1","cpp-hocon-source":"0.1.5","puppet-runtime":"201804100","augeas":"1.10.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.2":{"facter-source":"3.11.2","leatherman-source":"1.4.1","cpp-hocon-source":"0.1.5","puppet-runtime":"201806040","augeas":"1.10.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.3":{"facter-source":"3.11.2","leatherman-source":"1.4.1","cpp-hocon-source":"0.1.5","puppet-runtime":"201806040","augeas":"1.10.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.4":{"facter-source":"3.11.3","leatherman-source":"1.4.2","cpp-hocon-source":"0.1.7","puppet-runtime":"201806220","augeas":"1.10.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.6":{"facter-source":"3.11.4","leatherman-source":"1.4.2","cpp-hocon-source":"0.1.7","puppet-runtime":"201808140","augeas":"1.10.1","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.3.3","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.7":{"facter-source":"3.11.5","leatherman-source":"1.4.4","cpp-hocon-source":"0.1.7","puppet-runtime":"201810110","augeas":"1.10.1","curl":"7.61.1","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.8":{"facter-source":"3.11.6","leatherman-source":"1.4.4","cpp-hocon-source":"0.1.7","puppet-runtime":"201810110","augeas":"1.10.1","curl":"7.61.1","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.4":"2.4.4","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.9":{"puppet":"5.5.9","facter":"3.11.7","hiera":"3.4.6","leatherman":"1.4.4","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.6","libwhereami":"0.2.2","puppet-runtime":"201812201","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18"},"5.5.10":{"puppet":"5.5.10","facter":"3.11.7","hiera":"3.4.6","leatherman":"1.4.4","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.6","libwhereami":"0.2.2","puppet-runtime":"201812201","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18"},"5.5.11":{"puppet":"5.5.11","facter":"3.11.8","hiera":"3.4.6","leatherman":"1.4.4","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.7","libwhereami":"0.2.2","puppet-runtime":"201903080","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-selinux":"1.33.4","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.12":{"puppet":"5.5.12","facter":"3.11.8","hiera":"3.4.6","leatherman":"1.4.6","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.7","libwhereami":"0.2.2","puppet-runtime":"201903080","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.13":{"puppet":"5.5.13","facter":"3.11.8","hiera":"3.4.6","leatherman":"1.4.6","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.7","libwhereami":"0.2.2","puppet-runtime":"201904021","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.0.2":"1.0.2n","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2"},"5.5.14":{"puppet":"5.5.14","facter":"3.11.8","hiera":"3.4.6","leatherman":"1.4.6","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.7-3-g2b5d5d1","libwhereami":"0.2.2","puppet-runtime":"201904250","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.0.2":"1.0.2r","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.5.15":{"puppet":"5.5.15","facter":"3.11.9","hiera":"3.4.6","leatherman":"1.4.7","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.9","libwhereami":"0.2.2","puppet-runtime":"201906190","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.0.2":"1.0.2r","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.5.16":{"puppet":"5.5.16","facter":"3.11.9","hiera":"3.4.6","leatherman":"1.4.7","cpp-hocon":"0.1.7","marionette-collective":"2.12.4","cpp-pcp-client":"1.5.8","pxp-agent":"1.9.10","libwhereami":"0.2.2","puppet-runtime":"201907080","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.0.2":"1.0.2r","puppet-ca-bundle":"1.0.8","ruby-2.4.5":"2.4.5","ruby-augeas":"0.5.0","ruby-selinux":"1.33.4","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.30","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.5.17":{"puppet":"5.5.17","facter":"3.11.10","hiera":"3.4.6","leatherman":"1.4.8","cpp-hocon":"0.1.7","marionette-collective":"2.12.5","cpp-pcp-client":"1.5.9","pxp-agent":"1.9.11","libwhereami":"0.2.3","puppet-runtime":"201910020","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.0.2":"1.0.2t","puppet-ca-bundle":"1.0.8","ruby-2.4.9":"2.4.9","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.31","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1"},"5.5.18":{"puppet":"5.5.18","facter":"3.11.11","hiera":"3.4.6","leatherman":"1.4.10","cpp-hocon":"0.2.0","marionette-collective":"2.12.5","cpp-pcp-client":"1.6.1","pxp-agent":"1.9.12","libwhereami":"0.2.3","puppet-runtime":"202001090","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","openssl-lib":"1.0.2t","puppet-ca-bundle":"1.0.8","ruby-2.4.9":"2.4.9","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.31","rubygem-hiera-eyaml":"3.1.1","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"5.5.19":{"puppet":"5.5.19","facter":"3.11.12","hiera":"3.4.6","leatherman":"1.4.10","cpp-hocon":"0.2.0","marionette-collective":"2.12.5","cpp-pcp-client":"1.6.1","pxp-agent":"1.9.12","libwhereami":"0.2.3","puppet-runtime":"202003021","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","boost":"1.69.0","curl":"7.68.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","openssl-lib":"1.0.2u","puppet-ca-bundle":"1.0.8","ruby-2.4.9":"2.4.9","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.31","rubygem-hiera-eyaml":"3.2.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"5.5.20":{"puppet":"5.5.20","facter":"3.11.13","hiera":"3.4.6","leatherman":"1.4.12","cpp-hocon":"0.2.0","marionette-collective":"2.12.5","cpp-pcp-client":"1.6.4","pxp-agent":"1.9.12","libwhereami":"0.2.3","puppet-runtime":"202004210","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","augeas":"1.12.0","boost":"1.69.0","curl":"7.68.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1g","openssl-lib":"1.0.2u","puppet-ca-bundle":"1.0.8","ruby-2.4.10":"2.4.10","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","ruby-stomp":"1.4.4","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-gettext-setup":"0.34","rubygem-hiera-eyaml":"3.2.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-locale":"2.1.3","rubygem-multi_json":"1.14.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"0.1.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.0":{"facter-source":"3.12.0","leatherman-source":"1.5.0","cpp-hocon-source":"0.2.0","puppet-runtime":"201809130","augeas":"1.10.1","boost":"1.67.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.1":"2.5.1","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.1":{"facter-source":"3.12.0","leatherman-source":"1.5.0","cpp-hocon-source":"0.2.0","puppet-runtime":"201809260","augeas":"1.10.1","boost":"1.67.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.1":"2.5.1","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.2":{"facter-source":"3.12.0","leatherman-source":"1.5.1","cpp-hocon-source":"0.2.0","puppet-runtime":"201810011","augeas":"1.10.1","boost":"1.67.0","curl":"7.59.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.1":"2.5.1","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.3":{"facter-source":"3.12.1","leatherman-source":"1.5.2","cpp-hocon-source":"0.2.0","puppet-runtime":"201810110","augeas":"1.10.1","boost":"1.67.0","curl":"7.61.1","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.1":"2.5.1","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.4":{"facter-source":"3.12.1","leatherman-source":"1.5.3","cpp-hocon-source":"0.2.0","puppet-runtime":"201810110","augeas":"1.10.1","boost":"1.67.0","curl":"7.61.1","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.1":"2.5.1","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.5":{"puppet":"6.0.5","facter":"3.12.3","hiera":"3.4.6","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.4","libwhereami":"0.2.2","puppet-runtime":"201812201","puppet-resource_api":"v1.6.3","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.3","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.1","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.1","module-puppetlabs-yumrepo_core":"1.0.1","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1"},"6.0.7":{"puppet":"6.0.7","facter":"3.12.4","hiera":"3.4.6","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.5","libwhereami":"0.2.2","puppet-runtime":"201903080","puppet-resource_api":"v1.6.4","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.8":{"puppet":"6.0.8","facter":"3.12.4","hiera":"3.4.6","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.5","libwhereami":"0.2.2","puppet-runtime":"201904021","puppet-resource_api":"v1.6.4","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.0.9":{"puppet":"6.0.9","facter":"3.12.4","hiera":"3.4.6","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.6","libwhereami":"0.2.2","puppet-runtime":"201904240","puppet-resource_api":"v1.6.4","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1"},"6.0.10":{"puppet":"6.0.10","facter":"3.12.5","hiera":"3.4.6","leatherman":"1.5.5","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.7","libwhereami":"0.2.2","puppet-runtime":"201907080","puppet-resource_api":"1.6.5","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.1.0":{"facter-source":"3.12.2","leatherman-source":"1.5.4","cpp-hocon-source":"0.2.0","puppet-runtime":"201812140","augeas":"1.10.1","boost":"1.67.0","curl":"7.62.0","libxml2":"2.9.4","libxslt":"1.1.29","openssl-1.1.0":"1.1.0h","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.2.0":{"puppet":"6.2.0","facter":"3.12.3","hiera":"3.5.0","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.10.4","libwhereami":"0.2.2","puppet-runtime":"201901130","puppet-resource_api":"v1.6.3-7-g2419162","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.1","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.10.1","boost":"1.67.0","curl":"7.62.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.3.0":{"puppet":"6.3.0","facter":"3.13.0","hiera":"3.5.0","leatherman":"1.5.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.0","libwhereami":"0.2.2","puppet-runtime":"201902070","puppet-resource_api":"v1.7.0","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.1","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.62.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"2.1.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.4.0":{"puppet":"6.4.0","facter":"3.13.1","hiera":"3.5.0","leatherman":"1.6.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.0","libwhereami":"0.2.2","puppet-runtime":"201903192","puppet-resource_api":"v1.8.1","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-trollop":"2.1.2","yaml-cpp":"yaml-cpp-0.6.2"},"6.4.1":{"puppet":"6.4.1","facter":"3.13.2","hiera":"3.5.0","leatherman":"1.6.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.0","libwhereami":"0.2.2","puppet-runtime":"201904091","puppet-resource_api":"v1.8.1-9-gd7091b4","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.29","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1"},"6.4.2":{"puppet":"6.4.2","facter":"3.13.2","hiera":"3.5.0","leatherman":"1.6.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.1","libwhereami":"0.2.2","puppet-runtime":"201904240","puppet-resource_api":"1.8.2-6-gc8c913b","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.64.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep-merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.4.3":{"puppet":"6.4.3","facter":"3.13.3","hiera":"3.5.0","leatherman":"1.6.1","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.3","libwhereami":"0.2.2","puppet-runtime":"201907082","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.4.4":{"puppet":"6.4.4","facter":"3.13.4","hiera":"3.5.0","leatherman":"1.6.2","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.11.4","libwhereami":"0.2.3","puppet-runtime":"201910040","puppet-resource_api":"1.8.9","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.4.5":{"puppet":"6.4.5","facter":"3.13.5","hiera":"3.5.0","leatherman":"1.6.4","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.11.5","libwhereami":"0.2.3","puppet-runtime":"202001090","puppet-resource_api":"1.8.11","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.6","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.1.1","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.5.0":{"puppet":"6.5.0","facter":"3.14.0","hiera":"3.5.0","leatherman":"1.7.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.11.2","libwhereami":"0.2.2","puppet-runtime":"201906061","puppet-resource_api":"1.8.4","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.11.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.6.0":{"puppet":"6.6.0","facter":"3.14.1","hiera":"3.5.0","leatherman":"1.7.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.1","libwhereami":"0.2.2","puppet-runtime":"201906190","puppet-resource_api":"1.8.5","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.7.0":{"puppet":"6.7.0","facter":"3.14.2","hiera":"3.5.0","leatherman":"1.6.1-7-gdf19902","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.2","libwhereami":"0.2.2","puppet-runtime":"201907151","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.7.1":{"puppet":"6.7.1","facter":"3.14.2","hiera":"3.5.0","leatherman":"1.6.1-7-gdf19902","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.2","libwhereami":"0.2.2","puppet-runtime":"201907151","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.7.2":{"puppet":"6.7.2","facter":"3.14.2","hiera":"3.5.0","leatherman":"1.6.1-7-gdf19902","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.2","libwhereami":"0.2.2","puppet-runtime":"201907151","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.0","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.8.0":{"puppet":"6.8.0","facter":"3.14.3","hiera":"3.5.0","leatherman":"1.7.1","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.3","libwhereami":"0.2.2","puppet-runtime":"201908090","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.2","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.8.1":{"puppet":"6.8.1","facter":"3.14.3","hiera":"3.5.0","leatherman":"1.7.1","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.3","libwhereami":"0.2.2","puppet-runtime":"201908090","puppet-resource_api":"1.8.6","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.2","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.9.0":{"puppet":"6.9.0","facter":"3.14.4","hiera":"3.5.0-3-gcb2430e","leatherman":"1.7.2","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.12.4","libwhereami":"0.3.0","puppet-runtime":"201909040","puppet-resource_api":"1.8.7","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.2","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.3":"2.5.3","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.10.0":{"puppet":"6.10.0","facter":"3.14.5","hiera":"3.6.0","leatherman":"1.7.3","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.0","pxp-agent":"1.13.0","libwhereami":"0.3.1","puppet-runtime":"201909240","puppet-resource_api":"1.8.8","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.2","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.65.1","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1a","puppet-ca-bundle":"1.0.8","ruby-2.5.6":"2.5.6","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.10.1":{"puppet":"6.10.1","facter":"3.14.5","hiera":"3.6.0","leatherman":"1.8.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.0","libwhereami":"0.3.1","puppet-runtime":"201910040","puppet-resource_api":"1.8.9","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.4","module-puppetlabs-cron_core":"1.0.2","module-puppetlabs-host_core":"1.0.2","module-puppetlabs-mount_core":"1.0.2","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.1","module-puppetlabs-sshkeys_core":"1.0.2","module-puppetlabs-yumrepo_core":"1.0.3","module-puppetlabs-zfs_core":"1.0.1","module-puppetlabs-zone_core":"1.0.1","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.2.5","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.11.0":{"puppet":"6.11.0","facter":"3.14.6","facter-ng":"0.0.10","hiera":"3.6.0","leatherman":"1.9.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.1","libwhereami":"0.3.1","puppet-runtime":"201911050","puppet-resource_api":"1.8.10","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.4","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.0.94","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-thor":"0.20.3","yaml-cpp":"yaml-cpp-0.6.2"},"6.11.1":{"puppet":"6.11.1","facter":"3.14.6","facter-ng":"0.0.10","hiera":"3.6.0","leatherman":"1.9.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.1","libwhereami":"0.3.1","puppet-runtime":"201911050","puppet-resource_api":"1.8.10","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.4","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.0.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-thor":"0.20.3","yaml-cpp":"yaml-cpp-0.6.2"},"6.12.0":{"puppet":"6.12.0","facter":"3.14.7","facter-ng":"0.0.10","hiera":"3.6.0","leatherman":"1.10.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.1","libwhereami":"0.4.0","puppet-runtime":"202001090","puppet-resource_api":"1.8.11","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.6","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.67.0","curl":"7.66.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.1.1","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-thor":"0.20.3","yaml-cpp":"yaml-cpp-0.6.2"},"6.13.0":{"puppet":"6.13.0","facter":"3.14.8","facter-ng":"v4.0.5-23-g8693b81","hiera":"3.6.0","leatherman":"1.10.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.2","libwhereami":"0.4.0","puppet-runtime":"202002100","puppet-resource_api":"1.8.12","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.6","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.69.0","curl":"7.68.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-ffi":"1.9.25","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.2.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-sys-filesystem":"1.3.2","rubygem-text":"1.3.1","rubygem-thor":"1.0.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.14.0":{"puppet":"6.14.0","facter":"3.14.9","facter-ng":"v4.0.8.pre-26-gafe0d80","hiera":"3.6.0","leatherman":"1.10.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.6.1","pxp-agent":"1.15.2","libwhereami":"0.4.0","puppet-runtime":"202003021","puppet-resource_api":"1.8.13","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.6","module-puppetlabs-zfs_core":"1.0.4","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.69.0","curl":"7.68.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1d","puppet-ca-bundle":"1.0.8","ruby-2.5.7":"2.5.7","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-ffi":"1.9.25","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.2.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.2","rubygem-multi_json":"1.13.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-sys-filesystem":"1.3.2","rubygem-text":"1.3.1","rubygem-thor":"1.0.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.15.0":{"puppet":"6.15.0","facter":"3.14.10","facter-ng":"4.0.17-3-gdf99078","hiera":"3.6.0","leatherman":"1.12.0","cpp-hocon":"0.2.0","cpp-pcp-client":"1.7.2","pxp-agent":"1.15.3","libwhereami":"0.4.0","puppet-runtime":"202004210","puppet-resource_api":"1.8.13","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.3","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.7","module-puppetlabs-zfs_core":"1.0.5","module-puppetlabs-zone_core":"1.0.3","augeas":"1.12.0","boost":"1.69.0","curl":"7.68.0","libxml2":"2.9.8","libxslt":"1.1.33","openssl-1.1.1":"1.1.1g","puppet-ca-bundle":"1.0.8","ruby-2.5.8":"2.5.8","ruby-augeas":"0.5.0","ruby-selinux":"2.9","ruby-shadow":"2.5.0","rubygem-concurrent-ruby":"1.1.5","rubygem-deep_merge":"1.0.1","rubygem-fast_gettext":"1.1.2","rubygem-ffi":"1.12.2","rubygem-gettext":"3.2.2","rubygem-hiera-eyaml":"3.2.0","rubygem-highline":"1.6.21","rubygem-hocon":"1.3.0","rubygem-httpclient":"2.8.3","rubygem-locale":"2.1.3","rubygem-multi_json":"1.14.1","rubygem-net-ssh":"4.2.0","rubygem-optimist":"3.0.0","rubygem-semantic_puppet":"1.0.2","rubygem-sys-filesystem":"1.3.2","rubygem-text":"1.3.1","rubygem-thor":"1.0.1","yaml-cpp":"yaml-cpp-0.6.2"},"6.16.0":{"openssl-1.1.1":"1.1.1g","curl":"7.68.0","puppet-ca-bundle":"1.0.9","ruby-2.5.8":"2.5.8","augeas":"1.12.0","libxml2":"2.9.8","libxslt":"1.1.33","ruby-augeas":"0.5.0","ruby-shadow":"2.5.0","ruby-selinux":"2.0.94","rubygem-hocon":"1.3.1","rubygem-deep_merge":"1.0.1","rubygem-net-ssh":"4.2.0","rubygem-semantic_puppet":"1.0.2","rubygem-text":"1.3.1","rubygem-locale":"2.1.3","rubygem-gettext":"3.2.2","rubygem-fast_gettext":"1.1.2","rubygem-concurrent-ruby":"1.1.5","rubygem-ffi":"1.12.2","rubygem-multi_json":"1.14.1","rubygem-optimist":"3.0.0","rubygem-highline":"1.6.21","rubygem-hiera-eyaml":"3.2.0","rubygem-httpclient":"2.8.3","rubygem-thor":"1.0.1","rubygem-sys-filesystem":"1.3.2","boost":"1.73.0","yaml-cpp":"yaml-cpp-0.6.2","puppet":"6.16.0","facter":"3.14.11","facter-ng":"4.0.24","hiera":"3.6.0","leatherman":"1.12.0","cpp-hocon":"0.2.2","cpp-pcp-client":"1.7.3","pxp-agent":"1.15.4","libwhereami":"0.5.0","puppet-runtime":"202005260","puppet-resource_api":"1.8.13","virt-what":"1.18","dmidecode":"2.12","shellpath":"2015-09-18","module-puppetlabs-augeas_core":"1.0.5","module-puppetlabs-cron_core":"1.0.4","module-puppetlabs-host_core":"1.0.3","module-puppetlabs-mount_core":"1.0.4","module-puppetlabs-scheduled_task":"1.0.0","module-puppetlabs-selinux_core":"1.0.4","module-puppetlabs-sshkeys_core":"1.0.3","module-puppetlabs-yumrepo_core":"1.0.7","module-puppetlabs-zfs_core":"1.0.5","module-puppetlabs-zone_core":"1.0.3"}}
@@ -2,7 +2,6 @@ require 'puppet'
2
2
  require 'facter'
3
3
  require 'facterdb'
4
4
  require 'json'
5
- require 'mcollective'
6
5
 
7
6
  # The purpose of this module is to simplify the Puppet
8
7
  # module's RSpec tests by looping through all supported
@@ -31,31 +30,20 @@ module RspecPuppetFacts
31
30
  opts[:hardwaremodels] ||= ['x86_64']
32
31
  opts[:hardwaremodels] = [opts[:hardwaremodels]] unless opts[:hardwaremodels].is_a? Array
33
32
  opts[:supported_os] ||= RspecPuppetFacts.meta_supported_os
34
- opts[:facterversion] ||= Facter.version
33
+ opts[:facterversion] ||= RSpec.configuration.default_facter_version
35
34
 
36
35
  unless (facterversion = opts[:facterversion]) =~ /\A\d+\.\d+(?:\.\d+)*\z/
37
36
  raise ArgumentError, ":facterversion must be in the format 'n.n' or " \
38
37
  "'n.n.n' (n is numeric), not '#{facterversion}'"
39
38
  end
40
39
 
41
- facter_version_filter = RspecPuppetFacts.facter_version_to_filter(facterversion)
42
- db = FacterDB.get_facts({ :facterversion => facter_version_filter })
43
-
44
- version = facterversion
45
- while db.empty? && version !~ /\d+\.0\.\d+/
46
- version = RspecPuppetFacts.down_facter_version(version)
47
- facter_version_filter = RspecPuppetFacts.facter_version_to_filter(version)
48
- db = FacterDB.get_facts({ :facterversion => facter_version_filter})
49
- end
50
-
51
-
52
40
  filter = []
53
41
  opts[:supported_os].map do |os_sup|
54
42
  if os_sup['operatingsystemrelease']
55
- os_sup['operatingsystemrelease'].map do |operatingsystemmajrelease|
43
+ Array(os_sup['operatingsystemrelease']).map do |operatingsystemmajrelease|
56
44
  opts[:hardwaremodels].each do |hardwaremodel|
57
45
 
58
- os_release_filter = "/^#{operatingsystemmajrelease.split(' ')[0]}/"
46
+ os_release_filter = "/^#{Regexp.escape(operatingsystemmajrelease.split(' ')[0])}/"
59
47
  if os_sup['operatingsystem'] =~ /BSD/i
60
48
  hardwaremodel = 'amd64'
61
49
  elsif os_sup['operatingsystem'] =~ /Solaris/i
@@ -68,20 +56,22 @@ module RspecPuppetFacts
68
56
  "/^#{operatingsystemmajrelease}-/"
69
57
  end
70
58
  elsif os_sup['operatingsystem'] =~ /Windows/i
71
- hardwaremodel = version =~ /^[12]\./ ? 'x64' : 'x86_64'
59
+ hardwaremodel = facterversion =~ /^[12]\./ ? 'x64' : 'x86_64'
72
60
  os_sup['operatingsystem'] = os_sup['operatingsystem'].downcase
73
61
  operatingsystemmajrelease = operatingsystemmajrelease[/\A(?:Server )?(.+)/i, 1]
74
62
 
75
63
  # force quoting because windows releases can contain spaces
76
64
  os_release_filter = "\"#{operatingsystemmajrelease}\""
77
65
 
78
- if operatingsystemmajrelease == '2016' && Puppet::Util::Package.versioncmp(version, '3.4') < 0
66
+ if operatingsystemmajrelease == '2016' && Puppet::Util::Package.versioncmp(facterversion, '3.4') < 0
79
67
  os_release_filter = '/^10\\.0\\./'
80
68
  end
69
+ elsif os_sup['operatingsystem'] =~ /Amazon/i
70
+ # Tighten the regex for Amazon Linux 2 so that we don't pick up Amazon Linux 2016 or 2017 facts
71
+ os_release_filter = "/^2$/" if operatingsystemmajrelease == '2'
81
72
  end
82
73
 
83
74
  filter << {
84
- :facterversion => facter_version_filter,
85
75
  :operatingsystem => os_sup['operatingsystem'],
86
76
  :operatingsystemrelease => os_release_filter,
87
77
  :hardwaremodel => hardwaremodel,
@@ -91,7 +81,6 @@ module RspecPuppetFacts
91
81
  else
92
82
  opts[:hardwaremodels].each do |hardwaremodel|
93
83
  filter << {
94
- :facterversion => facter_version_filter,
95
84
  :operatingsystem => os_sup['operatingsystem'],
96
85
  :hardwaremodel => hardwaremodel,
97
86
  }
@@ -99,20 +88,40 @@ module RspecPuppetFacts
99
88
  end
100
89
  end
101
90
 
91
+ # FacterDB may have newer versions of facter data for which it contains a subset of all possible
92
+ # facter data (see FacterDB 0.5.2 for Facter releases 3.8 and 3.9). In this situation we need to
93
+ # cycle through and downgrade Facter versions per platform type until we find matching Facter data.
94
+ filter.each do |filter_spec|
95
+ facter_version_filter = RspecPuppetFacts.facter_version_to_filter(facterversion)
96
+ db = FacterDB.get_facts(filter_spec.merge({ :facterversion => facter_version_filter }))
97
+
98
+ if db.empty?
99
+ if RspecPuppetFacts.spec_facts_strict?
100
+ raise ArgumentError, "No facts were found in the FacterDB for Facter v#{facterversion} on #{filter_spec}, aborting"
101
+ end
102
+
103
+ facterversion_obj = Gem::Version.new(facterversion)
104
+
105
+ version = FacterDB.get_facts(filter_spec).map { |facts| Gem::Version.new(facts[:facterversion]) }.sort.reverse.detect { |v| v <= facterversion_obj }
106
+
107
+ next unless version
108
+ version = version.to_s
109
+ facter_version_filter = "/\\A#{Regexp.escape(version)}/"
110
+
111
+ unless version == facterversion
112
+ RspecPuppetFacts.warning "No facts were found in the FacterDB for Facter v#{facterversion} on #{filter_spec}, using v#{version} instead"
113
+ end
114
+ end
115
+
116
+ filter_spec[:facterversion] = facter_version_filter
117
+ end
118
+
102
119
  received_facts = FacterDB::get_facts(filter)
103
120
  unless received_facts.any?
104
121
  RspecPuppetFacts.warning "No facts were found in the FacterDB for: #{filter.inspect}"
105
122
  return {}
106
123
  end
107
124
 
108
- unless version == facterversion
109
- if RspecPuppetFacts.spec_facts_strict?
110
- raise ArgumentError, "No facts were found in the FacterDB for Facter v#{facterversion}, aborting"
111
- else
112
- RspecPuppetFacts.warning "No facts were found in the FacterDB for Facter v#{facterversion}, using v#{version} instead"
113
- end
114
- end
115
-
116
125
  os_facts_hash = {}
117
126
  received_facts.map do |facts|
118
127
  # Fix facter bug
@@ -134,9 +143,16 @@ module RspecPuppetFacts
134
143
  facts.merge! RspecPuppetFacts.common_facts
135
144
  os_facts_hash[os] = RspecPuppetFacts.with_custom_facts(os, facts)
136
145
  end
146
+
147
+ return stringify_keys(os_facts_hash) if RSpec.configuration.facterdb_string_keys
148
+
137
149
  os_facts_hash
138
150
  end
139
151
 
152
+ def stringify_keys(hash)
153
+ Hash[hash.collect { |k,v| [k.to_s, v.is_a?(Hash) ? stringify_keys(v) : v] }]
154
+ end
155
+
140
156
  # Register a custom fact that will be included in the facts hash.
141
157
  # If it should be limited to a particular OS, pass a :confine option
142
158
  # that contains the operating system(s) to confine to. If it should
@@ -211,20 +227,44 @@ module RspecPuppetFacts
211
227
  def self.common_facts
212
228
  return @common_facts if @common_facts
213
229
  @common_facts = {
214
- :mco_version => MCollective::VERSION,
215
- :puppetversion => Puppet.version,
216
- :rubysitedir => RbConfig::CONFIG['sitelibdir'],
217
- :rubyversion => RUBY_VERSION,
230
+ :puppetversion => Puppet.version,
231
+ :rubysitedir => RbConfig::CONFIG['sitelibdir'],
232
+ :rubyversion => RUBY_VERSION,
218
233
  }
219
- begin
220
- require 'augeas'
234
+
235
+ @common_facts[:mco_version] = MCollective::VERSION if mcollective?
236
+
237
+ if augeas?
221
238
  @common_facts[:augeasversion] = Augeas.open(nil, nil, Augeas::NO_MODL_AUTOLOAD).get('/augeas/version')
222
- rescue => e
223
- RspecPuppetFacts.warning "Failed to retrieve Augeas version: #{e}"
224
239
  end
240
+
225
241
  @common_facts
226
242
  end
227
243
 
244
+ # Determine if the Augeas gem is available.
245
+ # @api private
246
+ # @return [Boolean] true if the augeas gem could be loaded.
247
+ # :nocov:
248
+ def self.augeas?
249
+ require 'augeas'
250
+ true
251
+ rescue LoadError
252
+ false
253
+ end
254
+ # :nocov:
255
+
256
+ # Determine if the mcollective gem is available
257
+ # @api private
258
+ # @return [Boolean] true if the mcollective gem could be loaded.
259
+ # :nocov:
260
+ def self.mcollective?
261
+ require 'mcollective'
262
+ true
263
+ rescue LoadError
264
+ false
265
+ end
266
+ # :nocov:
267
+
228
268
  # Get the "operatingsystem_support" structure from
229
269
  # the parsed metadata.json file
230
270
  # @raise [StandardError] if there is no "operatingsystem_support"
@@ -284,15 +324,45 @@ module RspecPuppetFacts
284
324
  major, minor = version.split('.')
285
325
  "/\\A#{major}\\.#{minor}\\./"
286
326
  end
287
- # Subtracts from the minor version passed and returns a string representing
288
- # the next minor version down
289
- # @return [String] next version below
290
- # @param version [String] the Facter version
291
- # @param minor_subtractor [int] the value which to subtract by
292
- # @api private
293
- def self.down_facter_version(version, minor_subtractor = 1)
294
- major, minor, z = version.split('.')
295
- minor = (minor.to_i - minor_subtractor).to_s
296
- "#{major}.#{minor}.#{z}"
327
+
328
+ def self.facter_version_for_puppet_version(puppet_version)
329
+ return Facter.version if puppet_version.nil?
330
+
331
+ json_path = File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_components.json'))
332
+ unless File.file?(json_path) && File.readable?(json_path)
333
+ warning "#{json_path} does not exist or is not readable, defaulting to Facter #{Facter.version}"
334
+ return Facter.version
335
+ end
336
+
337
+ fd = File.open(json_path, 'rb:UTF-8')
338
+ data = JSON.parse(fd.read)
339
+
340
+ version_map = data.map { |_, versions|
341
+ if versions['puppet'].nil? || versions['facter'].nil?
342
+ nil
343
+ else
344
+ [Gem::Version.new(versions['puppet']), versions['facter']]
345
+ end
346
+ }.compact
347
+
348
+ puppet_gem_version = Gem::Version.new(puppet_version)
349
+ applicable_versions = version_map.select { |p, _| puppet_gem_version >= p }
350
+ if applicable_versions.empty?
351
+ warning "Unable to find Puppet #{puppet_version} in #{json_path}, defaulting to Facter #{Facter.version}"
352
+ return Facter.version
353
+ end
354
+
355
+ applicable_versions.sort { |a, b| b.first <=> a.first }.first.last
356
+ rescue JSON::ParserError
357
+ warning "#{json_path} contains invalid JSON, defaulting to Facter #{Facter.version}"
358
+ Facter.version
359
+ ensure
360
+ fd.close if fd
297
361
  end
298
362
  end
363
+
364
+ RSpec.configure do |c|
365
+ c.add_setting :default_facter_version,
366
+ :default => RspecPuppetFacts.facter_version_for_puppet_version(Puppet.version)
367
+ c.add_setting :facterdb_string_keys, :default => false
368
+ end