onceover 3.19.2 → 3.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -1
- data/Rakefile +15 -1
- data/features/factsets.feature +33 -4
- data/features/step_definitions/common.rb +6 -0
- data/lib/onceover/controlrepo.rb +5 -1
- data/lib/onceover/node.rb +19 -2
- data/onceover.gemspec +1 -1
- data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_extensions.pp +6 -0
- data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_external.pp +6 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/README.md +7 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_notrusted.json +530 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_nested.json +535 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_top.json +533 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_nested.json +537 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_top.json +535 -0
- data/templates/test_spec.rb.erb +4 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2811ab38a0c86a251a20d2a95ad90781aad02860f5c914c7b8390999514ac633
|
4
|
+
data.tar.gz: 912c30b4f6269bdb34ea097bc8f8594fc53e41b7ac279fb9cb1c3c921ec53966
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46aadcc7dff48722a888c12e1508ac055060ae7408277b5fc25ad6abdfb56996ed93c63445ddfa7d714026512a87dc8f5df73d6618c4ad7c44ab9d76fefdbec2
|
7
|
+
data.tar.gz: f0a9c6fa5c62f1f0e2b50a3a688bd476f7c6f8462dccc9c3ee4a484b1ff287172974ca24f38ff55dbbb19c839b36fc6eaf1b150c7beb1b5f8eafc84096c35f7b
|
data/README.md
CHANGED
@@ -330,6 +330,18 @@ puppet facts > fact_set_name.json
|
|
330
330
|
|
331
331
|
Its recommended to run this on each of the types of nodes that you run in your infrastructure to have good coverage.
|
332
332
|
|
333
|
+
If you are using [Trusted Facts](#trusted-facts) or [Trusted External Data](#trusted-external-data) and can use the [PE client tools](https://puppet.com/docs/pe/latest/installing_pe_client_tools.html) you can generate a factset which contains this information by running:
|
334
|
+
|
335
|
+
```shell
|
336
|
+
puppet facts --terminus puppetdb > fact_set_name.json
|
337
|
+
```
|
338
|
+
|
339
|
+
or
|
340
|
+
|
341
|
+
```shell
|
342
|
+
puppet facts --terminus puppetdb <node certname> > fact_set_name.json
|
343
|
+
```
|
344
|
+
|
333
345
|
Factsets are named based on their filename, i.e. `myfactset` in `onceover.yaml` refers `spec/factsets/myfactset.json`
|
334
346
|
|
335
347
|
#### Trusted Facts
|
@@ -351,6 +363,73 @@ You can add trusted facts to the factsets by creating a new section called trust
|
|
351
363
|
|
352
364
|
Notice that the `extensions` part is implied. The first fact in that example translates to `$trusted['extensions']['pp_role']` in Puppet code.
|
353
365
|
|
366
|
+
Alternatively, if you generated your factset using the PE client tools your trusted facts will be nested under the **values** hash. For example:
|
367
|
+
|
368
|
+
```json
|
369
|
+
{
|
370
|
+
"name": "node.puppetlabs.net",
|
371
|
+
"values": {
|
372
|
+
"aio_agent_build": "1.10.4",
|
373
|
+
"aio_agent_version": "1.10.4",
|
374
|
+
"architecture": "x86_64",
|
375
|
+
"trusted": {
|
376
|
+
"extensions": {
|
377
|
+
"pp_role": "agent",
|
378
|
+
"pp_datacenter": "puppet"
|
379
|
+
}
|
380
|
+
}
|
381
|
+
```
|
382
|
+
|
383
|
+
In this case, you're all set and onceover will auto-magically pick those up for you.
|
384
|
+
|
385
|
+
**Note**: The top level `trusted` hash takes precidence over the `trusted[extensions]` hash nested under `values`. Meaning that if you have any specified at the top level, any nested ones will not be considered. So pick **ONE** method and stick with that.
|
386
|
+
|
387
|
+
#### Trusted External Data
|
388
|
+
|
389
|
+
**Note:** This feature requires `rspec-puppet` >= 2.8.0.
|
390
|
+
|
391
|
+
You can add trusted external data to the factsets by creating a new section called trusted_external:
|
392
|
+
|
393
|
+
```json
|
394
|
+
{
|
395
|
+
"name": "node.puppetlabs.net",
|
396
|
+
"trusted_external": {
|
397
|
+
"example_forager": {
|
398
|
+
"globalRegion": "EMEA",
|
399
|
+
"serverOwner": "John Doe"
|
400
|
+
}
|
401
|
+
},
|
402
|
+
"values": {
|
403
|
+
"aio_agent_build": "1.10.4",
|
404
|
+
"aio_agent_version": "1.10.4",
|
405
|
+
"architecture": "x86_64",
|
406
|
+
```
|
407
|
+
|
408
|
+
Notice that the `external` part is implied, though the foragers name will still need to be provided. The first fact in that example translates to `$trusted['external']['example_forager']['globalRegion']` in Puppet code.
|
409
|
+
|
410
|
+
Alternatively, if you generated your factset using the PE client tools your trusted external data will be nested under the **values** hash. For example:
|
411
|
+
|
412
|
+
```json
|
413
|
+
{
|
414
|
+
"name": "node.puppetlabs.net",
|
415
|
+
"values": {
|
416
|
+
"aio_agent_build": "1.10.4",
|
417
|
+
"aio_agent_version": "1.10.4",
|
418
|
+
"architecture": "x86_64",
|
419
|
+
"trusted": {
|
420
|
+
"external": {
|
421
|
+
"example_forager": {
|
422
|
+
"globalRegion": "EMEA",
|
423
|
+
"serverOwner": "John Doe"
|
424
|
+
}
|
425
|
+
}
|
426
|
+
}
|
427
|
+
```
|
428
|
+
|
429
|
+
In this case, you're all set and onceover will auto-magically pick those up for you.
|
430
|
+
|
431
|
+
**Note**: The top level `trusted_external` hash takes precidence over the `trusted[external]` hash nested under `values`. Meaning that if you have any specified at the top level, any nested ones will not be considered. So pick **ONE** method and stick with that.
|
432
|
+
|
354
433
|
### Hiera
|
355
434
|
|
356
435
|
If you have hiera data inside your controlrepo (or somewhere else) `onceover` can be configured to use it.
|
@@ -587,10 +666,12 @@ require 'spec_helper'
|
|
587
666
|
require 'onceover/controlrepo'
|
588
667
|
require 'helpers/shared_examples'
|
589
668
|
|
590
|
-
Onceover::Controlrepo.new.spec_tests do |class_name,node_name,facts,pre_conditions|
|
669
|
+
Onceover::Controlrepo.new.spec_tests do |class_name, node_name, facts, trusted_facts, trusted_external_data, pre_conditions|
|
591
670
|
describe class_name do
|
592
671
|
context "on #{node_name}" do
|
593
672
|
let(:facts) { facts }
|
673
|
+
let(:trusted_facts) { trusted_facts }
|
674
|
+
let(:trusted_external_data) { trusted_external_data }
|
594
675
|
let(:pre_condition) { pre_conditions }
|
595
676
|
|
596
677
|
it_behaves_like 'soe'
|
data/Rakefile
CHANGED
@@ -2,6 +2,7 @@ require 'rubygems/tasks'
|
|
2
2
|
require 'rspec/core/rake_task'
|
3
3
|
require 'cucumber/rake/task'
|
4
4
|
require 'rubocop/rake_task'
|
5
|
+
require 'puppet/version'
|
5
6
|
Gem::Tasks.new
|
6
7
|
|
7
8
|
def windows?
|
@@ -18,7 +19,20 @@ RSpec::Core::RakeTask.new(:acceptance) do |t|
|
|
18
19
|
t.rspec_opts = '--pattern spec/acceptance/**/*_spec.rb'
|
19
20
|
end
|
20
21
|
|
21
|
-
Cucumber
|
22
|
+
# Cucumber task that intelligently skips test tagged with a minimum puppet
|
23
|
+
# version in the format "@puppet6"
|
24
|
+
Cucumber::Rake::Task.new(:cucumber) do |t|
|
25
|
+
major_version = Gem::Version.new(Puppet.version).segments[0]
|
26
|
+
|
27
|
+
# Create a list of tags to skip based on the next 3 major versions
|
28
|
+
skip_tags = ((major_version + 1)..(major_version + 3)).map { |v| "@puppet#{v}"}
|
29
|
+
|
30
|
+
# Generate logic string
|
31
|
+
skip_string = "not #{skip_tags.join(' and not ')}"
|
32
|
+
|
33
|
+
t.cucumber_opts = "--tags \"#{skip_string}\"" # Any valid command line option can go here.
|
34
|
+
end
|
35
|
+
|
22
36
|
|
23
37
|
task default: :full_tests
|
24
38
|
|
data/features/factsets.feature
CHANGED
@@ -5,15 +5,44 @@ Feature: Handle factsets properly
|
|
5
5
|
Background:
|
6
6
|
Given onceover executable
|
7
7
|
|
8
|
-
Scenario:
|
8
|
+
Scenario: Selecting existing factsets
|
9
9
|
Given control repo "factsets"
|
10
10
|
When I run onceover command "init"
|
11
11
|
Then the config should contain "centos_with_env"
|
12
12
|
|
13
13
|
# This needs to be tested because an environment fact, if not handled, makes
|
14
|
-
# compilation fail
|
14
|
+
# compilation fail because it breaks all of the workarounds that have been
|
15
15
|
# put in place within rspec-puppet for the environment
|
16
|
-
|
16
|
+
@puppet6
|
17
|
+
Scenario: Run with a factset containing an environment facts
|
17
18
|
Given existing control repo "factsets"
|
18
|
-
When I run onceover command "run spec"
|
19
|
+
When I run onceover command "run spec" with class "role::example"
|
19
20
|
Then I should not see any errors
|
21
|
+
|
22
|
+
@puppet6
|
23
|
+
Scenario: Run trusted_extensions tests on nodes where pp_datacenter is PDK
|
24
|
+
Given existing control repo "factsets"
|
25
|
+
When I run onceover command "run spec" with class "role::trusted_extensions" on nodes "centos7_trusted_extensions_top,centos7_trusted_extensions_nested"
|
26
|
+
Then I should not see any errors
|
27
|
+
|
28
|
+
# Spec tests should only pass on the centos7_trusted_extensions_top and
|
29
|
+
# centos7_trusted_extensions_nested factsets. The rest should fail
|
30
|
+
@puppet6
|
31
|
+
Scenario: Run trusted_extensions tests on nodes where pp_datacenter is not set
|
32
|
+
Given existing control repo "factsets"
|
33
|
+
When I run onceover command "run spec" with class "role::trusted_extensions"
|
34
|
+
Then I should see error with message pattern "Evaluation Error: Error while evaluating a Function Call, pp_datacenter is not set to PDX"
|
35
|
+
|
36
|
+
@puppet6
|
37
|
+
Scenario: Run trusted_external tests on nodes where $trusted['external']['example']['foo'] is set to 'bar'
|
38
|
+
Given existing control repo "factsets"
|
39
|
+
When I run onceover command "run spec" with class "role::trusted_external" on nodes "centos7_trusted_external_top,centos7_trusted_external_nested"
|
40
|
+
Then I should not see any errors
|
41
|
+
|
42
|
+
# Spec tests should only pass on the centos7_trusted_externalq_top and
|
43
|
+
# centos7_trusted_external_nested factsets. The rest should fail
|
44
|
+
@puppet6
|
45
|
+
Scenario: Run trusted_external tests on nodes where $trusted['external'] is not specified
|
46
|
+
Given existing control repo "factsets"
|
47
|
+
When I run onceover command "run spec" with class "role::trusted_external"
|
48
|
+
Then I should see error with message pattern "Evaluation Error: Operator \'\[\]\' is not applicable to an Undef Value."
|
@@ -39,6 +39,12 @@ When(/^I run onceover command "([^"]*)" with class "([^"]*)"$/) do |command, cl
|
|
39
39
|
@cmd.run
|
40
40
|
end
|
41
41
|
|
42
|
+
When(/^I run onceover command "([^"]*)" with class "([^"]*)" on nodes "([^"]*)"$/) do |command, cls, nodes|
|
43
|
+
@cmd.command = "#{command} --classes #{cls} --nodes #{nodes}"
|
44
|
+
log(@cmd)
|
45
|
+
@cmd.run
|
46
|
+
end
|
47
|
+
|
42
48
|
# The below can be used to skip tests if they only work on one os
|
43
49
|
When(/^test osfamily is "(\w*)"$/) do |osfamily|
|
44
50
|
require 'facter'
|
data/lib/onceover/controlrepo.rb
CHANGED
@@ -76,6 +76,10 @@ class Onceover
|
|
76
76
|
@@existing_controlrepo.facts(filter, 'trusted')
|
77
77
|
end
|
78
78
|
|
79
|
+
def self.trusted_external_facts(filter = nil)
|
80
|
+
@@existing_controlrepo.facts(filter, 'trusted_external')
|
81
|
+
end
|
82
|
+
|
79
83
|
def self.hiera_config_file
|
80
84
|
@@existing_controlrepo.hiera_config_file
|
81
85
|
end
|
@@ -596,7 +600,7 @@ class Onceover
|
|
596
600
|
|
597
601
|
# Loop over each test, executing the user's block on each
|
598
602
|
tests.each do |tst|
|
599
|
-
block.call(tst.classes[0].name, tst.nodes[0].name, tst.nodes[0].fact_set, testconfig.pre_condition)
|
603
|
+
block.call(tst.classes[0].name, tst.nodes[0].name, tst.nodes[0].fact_set, tst.nodes[0].trusted_set, tst.nodes[0].trusted_external_set, testconfig.pre_condition)
|
600
604
|
end
|
601
605
|
end
|
602
606
|
|
data/lib/onceover/node.rb
CHANGED
@@ -9,6 +9,7 @@ class Onceover
|
|
9
9
|
attr_accessor :beaker_node
|
10
10
|
attr_accessor :fact_set
|
11
11
|
attr_accessor :trusted_set
|
12
|
+
attr_accessor :trusted_external_set
|
12
13
|
|
13
14
|
def initialize(name)
|
14
15
|
@name = name
|
@@ -20,10 +21,26 @@ class Onceover
|
|
20
21
|
File.basename(facts_file, '.json') == name
|
21
22
|
}
|
22
23
|
@fact_set = Onceover::Node.clean_facts(Onceover::Controlrepo.facts[facts_file_index])
|
24
|
+
|
25
|
+
# First see if we can find a 'trusted' hash at the top level of our factset
|
23
26
|
@trusted_set = Onceover::Controlrepo.trusted_facts[facts_file_index]
|
27
|
+
# If we don't find it, attempt to find a 'trusted.extensions' hash nested in our fact_set
|
28
|
+
@trusted_set = @fact_set.dig('trusted', 'extensions') if @trusted_set.nil?
|
29
|
+
# If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
|
30
|
+
# let(:trusted_facts) { trusted_facts }
|
31
|
+
@trusted_set = {} if @trusted_set.nil?
|
32
|
+
|
33
|
+
# First see if we can find a 'trusted_external' hash at the top level of our factset
|
34
|
+
@trusted_external_set = Onceover::Controlrepo.trusted_external_facts[facts_file_index]
|
35
|
+
# If we don't find it, attempt to find a 'trusted.external' hash nested in our fact_set
|
36
|
+
@trusted_external_set = @fact_set.dig('trusted', 'external') if @trusted_external_set.nil?
|
37
|
+
# If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
|
38
|
+
# let(:trusted_external_data) { trusted_external_data }
|
39
|
+
@trusted_external_set = {} if @trusted_external_set.nil?
|
24
40
|
rescue TypeError
|
25
|
-
@fact_set =
|
26
|
-
@trusted_set =
|
41
|
+
@fact_set = {}
|
42
|
+
@trusted_set = {}
|
43
|
+
@trusted_external_set = {}
|
27
44
|
end
|
28
45
|
|
29
46
|
@@all << self
|
data/onceover.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "onceover"
|
7
|
-
s.version = "3.
|
7
|
+
s.version = "3.20.0"
|
8
8
|
s.authors = ["Dylan Ratcliffe"]
|
9
9
|
s.email = ["dylan.ratcliffe@puppet.com"]
|
10
10
|
s.homepage = "https://github.com/dylanratcliffe/onceover"
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Factsets
|
2
|
+
|
3
|
+
This directory is where we put any custom factsets that we want to use. They can be generated by running `puppet facts` on the target system.
|
4
|
+
|
5
|
+
**Hot tip:** If you already have factsets in here when you run `onceover init` they will be picked up and added to the config file Automatically
|
6
|
+
|
7
|
+
More info: https://github.com/dylanratcliffe/onceover#factsets
|
@@ -0,0 +1,530 @@
|
|
1
|
+
{
|
2
|
+
"name": "pe-201980-agent1.puppetdebug.vlan",
|
3
|
+
"values": {
|
4
|
+
"aio_agent_build": "6.16.0",
|
5
|
+
"aio_agent_version": "6.16.0",
|
6
|
+
"architecture": "x86_64",
|
7
|
+
"augeas": {
|
8
|
+
"version": "1.12.0"
|
9
|
+
},
|
10
|
+
"augeasversion": "1.12.0",
|
11
|
+
"bios_release_date": "04/01/2014",
|
12
|
+
"bios_vendor": "SeaBIOS",
|
13
|
+
"bios_version": "1.11.0-2.el7",
|
14
|
+
"blockdevice_vda_size": 8589934592,
|
15
|
+
"blockdevice_vda_vendor": "0x1af4",
|
16
|
+
"blockdevices": "vda",
|
17
|
+
"chassistype": "Other",
|
18
|
+
"dhcp_servers": {
|
19
|
+
"eth0": "192.168.0.3",
|
20
|
+
"system": "192.168.0.3"
|
21
|
+
},
|
22
|
+
"disks": {
|
23
|
+
"vda": {
|
24
|
+
"size": "8.00 GiB",
|
25
|
+
"size_bytes": 8589934592,
|
26
|
+
"vendor": "0x1af4"
|
27
|
+
}
|
28
|
+
},
|
29
|
+
"dmi": {
|
30
|
+
"bios": {
|
31
|
+
"release_date": "04/01/2014",
|
32
|
+
"vendor": "SeaBIOS",
|
33
|
+
"version": "1.11.0-2.el7"
|
34
|
+
},
|
35
|
+
"chassis": {
|
36
|
+
"type": "Other"
|
37
|
+
},
|
38
|
+
"manufacturer": "OpenStack Foundation",
|
39
|
+
"product": {
|
40
|
+
"name": "OpenStack Nova",
|
41
|
+
"serial_number": "8a7ed12f-4cfb-4a90-93a8-eb955c7d5f03",
|
42
|
+
"uuid": "1BE23657-913C-4F09-BA2E-5F310E285CF7"
|
43
|
+
}
|
44
|
+
},
|
45
|
+
"domain": "puppetdebug.vlan",
|
46
|
+
"ec2_metadata": {
|
47
|
+
"ami-id": "None",
|
48
|
+
"ami-launch-index": "0",
|
49
|
+
"ami-manifest-path": "FIXME",
|
50
|
+
"block-device-mapping": {
|
51
|
+
"ami": "vda",
|
52
|
+
"ebs0": "/dev/vda",
|
53
|
+
"root": "/dev/vda"
|
54
|
+
},
|
55
|
+
"hostname": "pe-201980-agent1",
|
56
|
+
"instance-action": "none",
|
57
|
+
"instance-id": "i-00009bb2",
|
58
|
+
"instance-type": "vol.small",
|
59
|
+
"local-hostname": "pe-201980-agent1",
|
60
|
+
"local-ipv4": "192.168.0.17",
|
61
|
+
"placement": {
|
62
|
+
"availability-zone": "local-storage"
|
63
|
+
},
|
64
|
+
"public-hostname": "pe-201980-agent1",
|
65
|
+
"public-ipv4": "10.234.6.180",
|
66
|
+
"reservation-id": "r-ct7wblph",
|
67
|
+
"security-groups": "default"
|
68
|
+
},
|
69
|
+
"facterversion": "3.14.11",
|
70
|
+
"filesystems": "xfs",
|
71
|
+
"fips_enabled": false,
|
72
|
+
"fqdn": "pe-201980-agent1.puppetdebug.vlan",
|
73
|
+
"gid": "root",
|
74
|
+
"hardwareisa": "x86_64",
|
75
|
+
"hardwaremodel": "x86_64",
|
76
|
+
"hostname": "pe-201980-agent1",
|
77
|
+
"hypervisors": {
|
78
|
+
"kvm": {
|
79
|
+
"openstack": true
|
80
|
+
}
|
81
|
+
},
|
82
|
+
"id": "root",
|
83
|
+
"identity": {
|
84
|
+
"gid": 0,
|
85
|
+
"group": "root",
|
86
|
+
"privileged": true,
|
87
|
+
"uid": 0,
|
88
|
+
"user": "root"
|
89
|
+
},
|
90
|
+
"interfaces": "eth0,lo",
|
91
|
+
"ipaddress": "192.168.0.17",
|
92
|
+
"ipaddress6": "fe80::f816:3eff:fe57:2bce",
|
93
|
+
"ipaddress6_eth0": "fe80::f816:3eff:fe57:2bce",
|
94
|
+
"ipaddress6_lo": "::1",
|
95
|
+
"ipaddress_eth0": "192.168.0.17",
|
96
|
+
"ipaddress_lo": "127.0.0.1",
|
97
|
+
"is_pe": false,
|
98
|
+
"is_virtual": true,
|
99
|
+
"kernel": "Linux",
|
100
|
+
"kernelmajversion": "3.10",
|
101
|
+
"kernelrelease": "3.10.0-957.1.3.el7.x86_64",
|
102
|
+
"kernelversion": "3.10.0",
|
103
|
+
"load_averages": {
|
104
|
+
"15m": 0.12,
|
105
|
+
"1m": 0.13,
|
106
|
+
"5m": 0.08
|
107
|
+
},
|
108
|
+
"macaddress": "fa:16:3e:57:2b:ce",
|
109
|
+
"macaddress_eth0": "fa:16:3e:57:2b:ce",
|
110
|
+
"manufacturer": "OpenStack Foundation",
|
111
|
+
"memory": {
|
112
|
+
"system": {
|
113
|
+
"available": "1.19 GiB",
|
114
|
+
"available_bytes": 1277591552,
|
115
|
+
"capacity": "33.71%",
|
116
|
+
"total": "1.80 GiB",
|
117
|
+
"total_bytes": 1927393280,
|
118
|
+
"used": "619.70 MiB",
|
119
|
+
"used_bytes": 649801728
|
120
|
+
}
|
121
|
+
},
|
122
|
+
"memoryfree": "1.19 GiB",
|
123
|
+
"memoryfree_mb": 1218.40625,
|
124
|
+
"memorysize": "1.80 GiB",
|
125
|
+
"memorysize_mb": 1838.10546875,
|
126
|
+
"mountpoints": {
|
127
|
+
"/": {
|
128
|
+
"available": "4.68 GiB",
|
129
|
+
"available_bytes": 5022298112,
|
130
|
+
"capacity": "41.45%",
|
131
|
+
"device": "/dev/vda1",
|
132
|
+
"filesystem": "xfs",
|
133
|
+
"options": [
|
134
|
+
"rw",
|
135
|
+
"seclabel",
|
136
|
+
"relatime",
|
137
|
+
"attr2",
|
138
|
+
"inode64",
|
139
|
+
"noquota"
|
140
|
+
],
|
141
|
+
"size": "7.99 GiB",
|
142
|
+
"size_bytes": 8578400256,
|
143
|
+
"used": "3.31 GiB",
|
144
|
+
"used_bytes": 3556102144
|
145
|
+
},
|
146
|
+
"/dev": {
|
147
|
+
"available": "896.73 MiB",
|
148
|
+
"available_bytes": 940290048,
|
149
|
+
"capacity": "0%",
|
150
|
+
"device": "devtmpfs",
|
151
|
+
"filesystem": "devtmpfs",
|
152
|
+
"options": [
|
153
|
+
"rw",
|
154
|
+
"seclabel",
|
155
|
+
"nosuid",
|
156
|
+
"size=918252k",
|
157
|
+
"nr_inodes=229563",
|
158
|
+
"mode=755"
|
159
|
+
],
|
160
|
+
"size": "896.73 MiB",
|
161
|
+
"size_bytes": 940290048,
|
162
|
+
"used": "0 bytes",
|
163
|
+
"used_bytes": 0
|
164
|
+
},
|
165
|
+
"/dev/hugepages": {
|
166
|
+
"available": "0 bytes",
|
167
|
+
"available_bytes": 0,
|
168
|
+
"capacity": "100%",
|
169
|
+
"device": "hugetlbfs",
|
170
|
+
"filesystem": "hugetlbfs",
|
171
|
+
"options": [
|
172
|
+
"rw",
|
173
|
+
"seclabel",
|
174
|
+
"relatime"
|
175
|
+
],
|
176
|
+
"size": "0 bytes",
|
177
|
+
"size_bytes": 0,
|
178
|
+
"used": "0 bytes",
|
179
|
+
"used_bytes": 0
|
180
|
+
},
|
181
|
+
"/dev/mqueue": {
|
182
|
+
"available": "0 bytes",
|
183
|
+
"available_bytes": 0,
|
184
|
+
"capacity": "100%",
|
185
|
+
"device": "mqueue",
|
186
|
+
"filesystem": "mqueue",
|
187
|
+
"options": [
|
188
|
+
"rw",
|
189
|
+
"seclabel",
|
190
|
+
"relatime"
|
191
|
+
],
|
192
|
+
"size": "0 bytes",
|
193
|
+
"size_bytes": 0,
|
194
|
+
"used": "0 bytes",
|
195
|
+
"used_bytes": 0
|
196
|
+
},
|
197
|
+
"/dev/pts": {
|
198
|
+
"available": "0 bytes",
|
199
|
+
"available_bytes": 0,
|
200
|
+
"capacity": "100%",
|
201
|
+
"device": "devpts",
|
202
|
+
"filesystem": "devpts",
|
203
|
+
"options": [
|
204
|
+
"rw",
|
205
|
+
"seclabel",
|
206
|
+
"nosuid",
|
207
|
+
"noexec",
|
208
|
+
"relatime",
|
209
|
+
"gid=5",
|
210
|
+
"mode=620",
|
211
|
+
"ptmxmode=000"
|
212
|
+
],
|
213
|
+
"size": "0 bytes",
|
214
|
+
"size_bytes": 0,
|
215
|
+
"used": "0 bytes",
|
216
|
+
"used_bytes": 0
|
217
|
+
},
|
218
|
+
"/dev/shm": {
|
219
|
+
"available": "919.05 MiB",
|
220
|
+
"available_bytes": 963694592,
|
221
|
+
"capacity": "0%",
|
222
|
+
"device": "tmpfs",
|
223
|
+
"filesystem": "tmpfs",
|
224
|
+
"options": [
|
225
|
+
"rw",
|
226
|
+
"seclabel",
|
227
|
+
"nosuid",
|
228
|
+
"nodev"
|
229
|
+
],
|
230
|
+
"size": "919.05 MiB",
|
231
|
+
"size_bytes": 963694592,
|
232
|
+
"used": "0 bytes",
|
233
|
+
"used_bytes": 0
|
234
|
+
},
|
235
|
+
"/run": {
|
236
|
+
"available": "886.63 MiB",
|
237
|
+
"available_bytes": 929693696,
|
238
|
+
"capacity": "3.53%",
|
239
|
+
"device": "tmpfs",
|
240
|
+
"filesystem": "tmpfs",
|
241
|
+
"options": [
|
242
|
+
"rw",
|
243
|
+
"seclabel",
|
244
|
+
"nosuid",
|
245
|
+
"nodev",
|
246
|
+
"mode=755"
|
247
|
+
],
|
248
|
+
"size": "919.05 MiB",
|
249
|
+
"size_bytes": 963694592,
|
250
|
+
"used": "32.43 MiB",
|
251
|
+
"used_bytes": 34000896
|
252
|
+
},
|
253
|
+
"/run/user/1000": {
|
254
|
+
"available": "183.81 MiB",
|
255
|
+
"available_bytes": 192741376,
|
256
|
+
"capacity": "0%",
|
257
|
+
"device": "tmpfs",
|
258
|
+
"filesystem": "tmpfs",
|
259
|
+
"options": [
|
260
|
+
"rw",
|
261
|
+
"seclabel",
|
262
|
+
"nosuid",
|
263
|
+
"nodev",
|
264
|
+
"relatime",
|
265
|
+
"size=188224k",
|
266
|
+
"mode=700",
|
267
|
+
"uid=1000",
|
268
|
+
"gid=1000"
|
269
|
+
],
|
270
|
+
"size": "183.81 MiB",
|
271
|
+
"size_bytes": 192741376,
|
272
|
+
"used": "0 bytes",
|
273
|
+
"used_bytes": 0
|
274
|
+
},
|
275
|
+
"/sys/fs/cgroup": {
|
276
|
+
"available": "919.05 MiB",
|
277
|
+
"available_bytes": 963694592,
|
278
|
+
"capacity": "0%",
|
279
|
+
"device": "tmpfs",
|
280
|
+
"filesystem": "tmpfs",
|
281
|
+
"options": [
|
282
|
+
"ro",
|
283
|
+
"seclabel",
|
284
|
+
"nosuid",
|
285
|
+
"nodev",
|
286
|
+
"noexec",
|
287
|
+
"mode=755"
|
288
|
+
],
|
289
|
+
"size": "919.05 MiB",
|
290
|
+
"size_bytes": 963694592,
|
291
|
+
"used": "0 bytes",
|
292
|
+
"used_bytes": 0
|
293
|
+
},
|
294
|
+
"/var/lib/nfs/rpc_pipefs": {
|
295
|
+
"available": "0 bytes",
|
296
|
+
"available_bytes": 0,
|
297
|
+
"capacity": "100%",
|
298
|
+
"device": "rpc_pipefs",
|
299
|
+
"filesystem": "rpc_pipefs",
|
300
|
+
"options": [
|
301
|
+
"rw",
|
302
|
+
"relatime"
|
303
|
+
],
|
304
|
+
"size": "0 bytes",
|
305
|
+
"size_bytes": 0,
|
306
|
+
"used": "0 bytes",
|
307
|
+
"used_bytes": 0
|
308
|
+
}
|
309
|
+
},
|
310
|
+
"mtu_eth0": 1500,
|
311
|
+
"mtu_lo": 65536,
|
312
|
+
"netmask": "255.255.255.0",
|
313
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
314
|
+
"netmask6_eth0": "ffff:ffff:ffff:ffff::",
|
315
|
+
"netmask6_lo": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
316
|
+
"netmask_eth0": "255.255.255.0",
|
317
|
+
"netmask_lo": "255.0.0.0",
|
318
|
+
"network": "192.168.0.0",
|
319
|
+
"network6": "fe80::",
|
320
|
+
"network6_eth0": "fe80::",
|
321
|
+
"network6_lo": "::1",
|
322
|
+
"network_eth0": "192.168.0.0",
|
323
|
+
"network_lo": "127.0.0.0",
|
324
|
+
"networking": {
|
325
|
+
"dhcp": "192.168.0.3",
|
326
|
+
"domain": "puppetdebug.vlan",
|
327
|
+
"fqdn": "pe-201980-agent1.puppetdebug.vlan",
|
328
|
+
"hostname": "pe-201980-agent1",
|
329
|
+
"interfaces": {
|
330
|
+
"eth0": {
|
331
|
+
"bindings": [
|
332
|
+
{
|
333
|
+
"address": "192.168.0.17",
|
334
|
+
"netmask": "255.255.255.0",
|
335
|
+
"network": "192.168.0.0"
|
336
|
+
}
|
337
|
+
],
|
338
|
+
"bindings6": [
|
339
|
+
{
|
340
|
+
"address": "fe80::f816:3eff:fe57:2bce",
|
341
|
+
"netmask": "ffff:ffff:ffff:ffff::",
|
342
|
+
"network": "fe80::"
|
343
|
+
}
|
344
|
+
],
|
345
|
+
"dhcp": "192.168.0.3",
|
346
|
+
"ip": "192.168.0.17",
|
347
|
+
"ip6": "fe80::f816:3eff:fe57:2bce",
|
348
|
+
"mac": "fa:16:3e:57:2b:ce",
|
349
|
+
"mtu": 1500,
|
350
|
+
"netmask": "255.255.255.0",
|
351
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
352
|
+
"network": "192.168.0.0",
|
353
|
+
"network6": "fe80::",
|
354
|
+
"scope6": "link"
|
355
|
+
},
|
356
|
+
"lo": {
|
357
|
+
"bindings": [
|
358
|
+
{
|
359
|
+
"address": "127.0.0.1",
|
360
|
+
"netmask": "255.0.0.0",
|
361
|
+
"network": "127.0.0.0"
|
362
|
+
}
|
363
|
+
],
|
364
|
+
"bindings6": [
|
365
|
+
{
|
366
|
+
"address": "::1",
|
367
|
+
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
368
|
+
"network": "::1"
|
369
|
+
}
|
370
|
+
],
|
371
|
+
"ip": "127.0.0.1",
|
372
|
+
"ip6": "::1",
|
373
|
+
"mtu": 65536,
|
374
|
+
"netmask": "255.0.0.0",
|
375
|
+
"netmask6": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
376
|
+
"network": "127.0.0.0",
|
377
|
+
"network6": "::1",
|
378
|
+
"scope6": "host"
|
379
|
+
}
|
380
|
+
},
|
381
|
+
"ip": "192.168.0.17",
|
382
|
+
"ip6": "fe80::f816:3eff:fe57:2bce",
|
383
|
+
"mac": "fa:16:3e:57:2b:ce",
|
384
|
+
"mtu": 1500,
|
385
|
+
"netmask": "255.255.255.0",
|
386
|
+
"netmask6": "ffff:ffff:ffff:ffff::",
|
387
|
+
"network": "192.168.0.0",
|
388
|
+
"network6": "fe80::",
|
389
|
+
"primary": "eth0",
|
390
|
+
"scope6": "link"
|
391
|
+
},
|
392
|
+
"operatingsystem": "CentOS",
|
393
|
+
"operatingsystemmajrelease": "7",
|
394
|
+
"operatingsystemrelease": "7.6.1810",
|
395
|
+
"os": {
|
396
|
+
"architecture": "x86_64",
|
397
|
+
"family": "RedHat",
|
398
|
+
"hardware": "x86_64",
|
399
|
+
"name": "CentOS",
|
400
|
+
"release": {
|
401
|
+
"full": "7.6.1810",
|
402
|
+
"major": "7",
|
403
|
+
"minor": "6"
|
404
|
+
},
|
405
|
+
"selinux": {
|
406
|
+
"config_mode": "enforcing",
|
407
|
+
"config_policy": "targeted",
|
408
|
+
"current_mode": "enforcing",
|
409
|
+
"enabled": true,
|
410
|
+
"enforced": true,
|
411
|
+
"policy_version": "31"
|
412
|
+
}
|
413
|
+
},
|
414
|
+
"osfamily": "RedHat",
|
415
|
+
"package_provider": "yum",
|
416
|
+
"partitions": {
|
417
|
+
"/dev/vda1": {
|
418
|
+
"filesystem": "xfs",
|
419
|
+
"mount": "/",
|
420
|
+
"size": "8.00 GiB",
|
421
|
+
"size_bytes": 8588886016,
|
422
|
+
"uuid": "f41e390f-835b-4223-a9bb-9b45984ddf8d"
|
423
|
+
}
|
424
|
+
},
|
425
|
+
"path": "/root/.rbenv/shims:/root/.rbenv/bin:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/puppetlabs/bin:/root/bin:/root/bin:/root/bin",
|
426
|
+
"pe_patch": {
|
427
|
+
"package_updates": [
|
428
|
+
|
429
|
+
],
|
430
|
+
"package_update_count": 0,
|
431
|
+
"missing_update_kbs": [
|
432
|
+
|
433
|
+
],
|
434
|
+
"security_package_updates": [
|
435
|
+
|
436
|
+
],
|
437
|
+
"security_package_update_count": 0,
|
438
|
+
"blackouts": {
|
439
|
+
},
|
440
|
+
"pinned_packages": [
|
441
|
+
|
442
|
+
],
|
443
|
+
"last_run": {
|
444
|
+
},
|
445
|
+
"patch_group": "",
|
446
|
+
"reboot_override": "default",
|
447
|
+
"reboots": {
|
448
|
+
"reboot_required": "unknown"
|
449
|
+
},
|
450
|
+
"block_patching_on_warnings": "false",
|
451
|
+
"warnings": {
|
452
|
+
"update_file": "Update file not found, update information invalid",
|
453
|
+
"security_update_file": "Security update file not found, update information invalid"
|
454
|
+
},
|
455
|
+
"blocked": false,
|
456
|
+
"blocked_reasons": [
|
457
|
+
|
458
|
+
]
|
459
|
+
},
|
460
|
+
"physicalprocessorcount": 1,
|
461
|
+
"platform_symlink_writable": true,
|
462
|
+
"platform_tag": "el-7-x86_64",
|
463
|
+
"processor0": "Intel Core Processor (Haswell, no TSX, IBRS)",
|
464
|
+
"processorcount": 1,
|
465
|
+
"processors": {
|
466
|
+
"count": 1,
|
467
|
+
"isa": "x86_64",
|
468
|
+
"models": [
|
469
|
+
"Intel Core Processor (Haswell, no TSX, IBRS)"
|
470
|
+
],
|
471
|
+
"physicalcount": 1
|
472
|
+
},
|
473
|
+
"productname": "OpenStack Nova",
|
474
|
+
"puppet_environmentpath": "/etc/puppetlabs/code/environments",
|
475
|
+
"puppet_files_dir_present": false,
|
476
|
+
"puppet_inventory_metadata": {
|
477
|
+
"packages": {
|
478
|
+
"collection_enabled": false,
|
479
|
+
"last_collection_time": "0.0s"
|
480
|
+
}
|
481
|
+
},
|
482
|
+
"puppet_metrics_collector": {
|
483
|
+
"have_vmware_tools": false,
|
484
|
+
"have_pe_psql": false
|
485
|
+
},
|
486
|
+
"puppet_server": "pe-201980-master.puppetdebug.vlan",
|
487
|
+
"puppet_vardir": "/opt/puppetlabs/puppet/cache",
|
488
|
+
"puppetversion": "6.16.0",
|
489
|
+
"root_home": "/root",
|
490
|
+
"ruby": {
|
491
|
+
"platform": "x86_64-linux",
|
492
|
+
"sitedir": "/opt/puppetlabs/puppet/lib/ruby/site_ruby/2.5.0",
|
493
|
+
"version": "2.5.8"
|
494
|
+
},
|
495
|
+
"rubyplatform": "x86_64-linux",
|
496
|
+
"rubysitedir": "/opt/puppetlabs/puppet/lib/ruby/site_ruby/2.5.0",
|
497
|
+
"rubyversion": "2.5.8",
|
498
|
+
"scope6": "link",
|
499
|
+
"scope6_eth0": "link",
|
500
|
+
"scope6_lo": "host",
|
501
|
+
"selinux": true,
|
502
|
+
"selinux_config_mode": "enforcing",
|
503
|
+
"selinux_config_policy": "targeted",
|
504
|
+
"selinux_current_mode": "enforcing",
|
505
|
+
"selinux_enforced": true,
|
506
|
+
"selinux_policyversion": "31",
|
507
|
+
"serialnumber": "8a7ed12f-4cfb-4a90-93a8-eb955c7d5f03",
|
508
|
+
"service_provider": "systemd",
|
509
|
+
"splunk_hec_is_pe": false,
|
510
|
+
"staging_http_get": "curl",
|
511
|
+
"system_uptime": {
|
512
|
+
"days": 49,
|
513
|
+
"hours": 1176,
|
514
|
+
"seconds": 4236638,
|
515
|
+
"uptime": "49 days"
|
516
|
+
},
|
517
|
+
"timezone": "UTC",
|
518
|
+
"uptime": "49 days",
|
519
|
+
"uptime_days": 49,
|
520
|
+
"uptime_hours": 1176,
|
521
|
+
"uptime_seconds": 4236638,
|
522
|
+
"uuid": "1BE23657-913C-4F09-BA2E-5F310E285CF7",
|
523
|
+
"virtual": "kvm",
|
524
|
+
"clientcert": "pe-201980-agent1.puppetdebug.vlan",
|
525
|
+
"clientversion": "6.16.0",
|
526
|
+
"clientnoop": false
|
527
|
+
},
|
528
|
+
"timestamp": "2021-03-23T20:11:25.345180149+00:00",
|
529
|
+
"expiration": "2021-03-23T20:41:25.345633462+00:00"
|
530
|
+
}
|