facter 4.0.39 → 4.0.44

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/bin/facter +3 -4
  3. data/lib/facter.rb +107 -28
  4. data/lib/facter/config.rb +354 -0
  5. data/lib/facter/custom_facts/core/aggregate.rb +51 -17
  6. data/lib/facter/custom_facts/core/execution.rb +27 -35
  7. data/lib/facter/custom_facts/core/execution/base.rb +13 -7
  8. data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
  9. data/lib/facter/custom_facts/util/fact.rb +1 -1
  10. data/lib/facter/custom_facts/util/resolution.rb +40 -11
  11. data/lib/facter/facts/aix/disks.rb +1 -1
  12. data/lib/facter/facts/linux/ec2_metadata.rb +5 -29
  13. data/lib/facter/facts/linux/ec2_userdata.rb +5 -27
  14. data/lib/facter/facts/linux/is_virtual.rb +7 -46
  15. data/lib/facter/facts/linux/virtual.rb +3 -58
  16. data/lib/facter/facts/rhel/os/release.rb +1 -1
  17. data/lib/facter/facts/solaris/disks.rb +1 -1
  18. data/lib/facter/facts/solaris/zones.rb +1 -1
  19. data/lib/facter/facts_utils/virtual_detector.rb +78 -0
  20. data/lib/facter/framework/benchmarking/timer.rb +4 -2
  21. data/lib/facter/framework/cli/cli.rb +83 -36
  22. data/lib/facter/framework/cli/cli_launcher.rb +34 -38
  23. data/lib/facter/framework/config/fact_groups.rb +41 -7
  24. data/lib/facter/framework/core/cache_manager.rb +43 -23
  25. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -11
  26. data/lib/facter/framework/core/options/config_file_options.rb +5 -3
  27. data/lib/facter/framework/core/options/option_store.rb +60 -27
  28. data/lib/facter/framework/detector/os_hierarchy.rb +5 -9
  29. data/lib/facter/framework/logging/logger.rb +1 -5
  30. data/lib/facter/resolvers/aix/architecture_resolver.rb +15 -1
  31. data/lib/facter/resolvers/aix/os_level.rb +1 -1
  32. data/lib/facter/resolvers/augeas_resolver.rb +7 -1
  33. data/lib/facter/resolvers/bsd/processors.rb +11 -7
  34. data/lib/facter/resolvers/disk_resolver.rb +11 -3
  35. data/lib/facter/resolvers/dmi_decode.rb +1 -0
  36. data/lib/facter/resolvers/dmi_resolver.rb +2 -2
  37. data/lib/facter/resolvers/freebsd/geom_resolver.rb +12 -20
  38. data/lib/facter/resolvers/freebsd/processors.rb +11 -7
  39. data/lib/facter/resolvers/memory_resolver.rb +12 -14
  40. data/lib/facter/resolvers/mountpoints_resolver.rb +50 -22
  41. data/lib/facter/resolvers/networking_linux_resolver.rb +10 -5
  42. data/lib/facter/resolvers/partitions.rb +60 -57
  43. data/lib/facter/resolvers/processors_resolver.rb +5 -1
  44. data/lib/facter/resolvers/solaris/dmi.rb +2 -0
  45. data/lib/facter/resolvers/solaris/mountpoints.rb +60 -0
  46. data/lib/facter/resolvers/solaris/networking.rb +1 -2
  47. data/lib/facter/resolvers/solaris/os_release.rb +4 -3
  48. data/lib/facter/resolvers/ssh_resolver.rb +4 -4
  49. data/lib/facter/version.rb +1 -1
  50. metadata +5 -4
  51. data/lib/facter/fact_groups.conf +0 -308
  52. data/lib/facter/os_hierarchy.json +0 -36
@@ -15,98 +15,122 @@ module Facter
15
15
  end
16
16
 
17
17
  def read_partitions(fact_name)
18
- @fact_list[:partitions] = {}
19
- return {} unless File.readable?(BLOCK_PATH)
18
+ return unless File.readable?(BLOCK_PATH)
20
19
 
21
20
  block_devices = Dir.entries(BLOCK_PATH).reject { |dir| dir =~ /^\.+/ }
21
+ @fact_list[:partitions] = {} unless block_devices.empty?
22
+ blkid_and_lsblk = {}
23
+
22
24
  block_devices.each do |block_device|
23
25
  block_path = "#{BLOCK_PATH}/#{block_device}"
24
26
  if File.directory?("#{block_path}/device")
25
- extract_from_device(block_path)
27
+ extract_from_device(block_path, blkid_and_lsblk)
26
28
  elsif File.directory?("#{block_path}/dm")
27
- extract_from_dm(block_path)
29
+ extract_from_dm(block_path, block_device, blkid_and_lsblk)
28
30
  elsif File.directory?("#{block_path}/loop")
29
- extract_from_loop(block_path)
31
+ extract_from_loop(block_path, block_device, blkid_and_lsblk)
30
32
  end
31
33
  end
34
+
32
35
  @fact_list[fact_name]
33
36
  end
34
37
 
35
- def extract_from_device(block_path)
38
+ def extract_from_device(block_path, blkid_and_lsblk)
36
39
  subdirs = browse_subdirectories(block_path)
37
40
  subdirs.each do |subdir|
38
41
  name = "/dev/#{subdir.split('/').last}"
39
- populate_partitions(name, subdir)
42
+ populate_partitions(name, subdir, blkid_and_lsblk)
40
43
  end
41
44
  end
42
45
 
43
- def extract_from_dm(block_path)
46
+ def extract_from_dm(block_path, block_device, blkid_and_lsblk)
44
47
  map_name = Util::FileHelper.safe_read("#{block_path}/dm/name").chomp
45
48
  if map_name.empty?
46
- populate_partitions("/dev#{block_path}", block_path)
49
+ populate_partitions("/dev/#{block_device}", block_path, blkid_and_lsblk)
47
50
  else
48
- populate_partitions("/dev/mapper/#{map_name}", block_path)
51
+ populate_partitions("/dev/mapper/#{map_name}", block_path, blkid_and_lsblk)
49
52
  end
50
53
  end
51
54
 
52
- def extract_from_loop(block_path)
55
+ def extract_from_loop(block_path, block_device, blkid_and_lsblk)
53
56
  backing_file = Util::FileHelper.safe_read("#{block_path}/loop/backing_file").chomp
54
57
  if backing_file.empty?
55
- populate_partitions("/dev#{block_path}", block_path)
58
+ populate_partitions("/dev/#{block_device}", block_path, blkid_and_lsblk)
56
59
  else
57
- populate_partitions("/dev#{block_path}", block_path, backing_file)
60
+ populate_partitions("/dev/#{block_device}", block_path, blkid_and_lsblk, backing_file)
58
61
  end
59
62
  end
60
63
 
61
- def populate_partitions(partition_name, block_path, backing_file = nil)
62
- @fact_list[:partitions][partition_name] = {}
64
+ def populate_partitions(partition_name, block_path, blkid_and_lsblk, backing_file = nil)
63
65
  size_bytes = Util::FileHelper.safe_read("#{block_path}/size", '0')
64
66
  .chomp.to_i * BLOCK_SIZE
65
67
  info_hash = { size_bytes: size_bytes,
66
68
  size: Facter::FactsUtils::UnitConverter.bytes_to_human_readable(size_bytes),
67
69
  backing_file: backing_file }
68
- info_hash.merge!(populate_from_syscalls(partition_name))
70
+ info_hash.merge!(populate_from_syscalls(partition_name, blkid_and_lsblk))
69
71
  @fact_list[:partitions][partition_name] = info_hash.reject { |_key, value| value.nil? }
70
72
  end
71
73
 
72
- def populate_from_syscalls(partition_name)
73
- part_info = populate_from_blkid(partition_name)
74
+ def populate_from_syscalls(partition_name, blkid_and_lsblk)
75
+ part_info = populate_from_blkid(partition_name, blkid_and_lsblk)
74
76
 
75
- return pupulate_from_lsblk(partition_name) if part_info.empty?
77
+ return populate_from_lsblk(partition_name, blkid_and_lsblk) if part_info.empty?
76
78
 
77
79
  part_info
78
80
  end
79
81
 
80
- def populate_from_blkid(partition_name)
81
- return {} unless blkid_command?
82
+ def browse_subdirectories(path)
83
+ dirs = Dir[File.join(path, '**', '*')].select { |p| File.directory? p }
84
+ dirs.select { |subdir| subdir.split('/').last.include?(path.split('/').last) }.reject(&:nil?)
85
+ end
86
+
87
+ def populate_from_blkid(partition_name, blkid_and_lsblk)
88
+ return {} unless available?('blkid', blkid_and_lsblk)
89
+
90
+ blkid_and_lsblk[:blkid] ||= execute_and_extract_blkid_info
82
91
 
83
- @blkid_content ||= execute_and_extract_blkid_info
84
- return {} unless @blkid_content[partition_name]
92
+ partition_data = blkid_and_lsblk[:blkid][partition_name]
93
+ return {} unless partition_data
94
+
95
+ filesys = partition_data['TYPE']
96
+ uuid = partition_data['UUID']
97
+ label = partition_data['LABEL']
98
+ part_uuid = partition_data['PARTUUID']
99
+ part_label = partition_data['PARTLABEL']
85
100
 
86
- filesys = @blkid_content[partition_name]['TYPE']
87
- uuid = @blkid_content[partition_name]['UUID']
88
- label = @blkid_content[partition_name]['LABEL']
89
- part_uuid = @blkid_content[partition_name]['PARTUUID']
90
- part_label = @blkid_content[partition_name]['PARTLABEL']
91
101
  { filesystem: filesys, uuid: uuid, label: label, partuuid: part_uuid, partlabel: part_label }
92
102
  end
93
103
 
94
- def blkid_command?
95
- return @blkid_exists unless @blkid_exists.nil?
104
+ def available?(command, blkid_and_lsblk)
105
+ command_exists_key = command == 'blkid' ? :blkid_exists : :lsblk_exists
106
+
107
+ return blkid_and_lsblk[command_exists_key] unless blkid_and_lsblk[command_exists_key].nil?
96
108
 
97
- output = Facter::Core::Execution.execute('which blkid', logger: log)
109
+ output = Facter::Core::Execution.execute("which #{command}", logger: log)
98
110
 
99
- @blkid_exists = !output.empty?
111
+ blkid_and_lsblk[:command_exists_key] = !output.empty?
100
112
  end
101
113
 
102
- def pupulate_from_lsblk(partition_name)
103
- return {} unless lsblk_command?
114
+ def execute_and_extract_blkid_info
115
+ stdout = Facter::Core::Execution.execute('blkid', logger: log)
116
+ output_hash = Hash[*stdout.split(/^([^:]+):/)[1..-1]]
117
+ output_hash.each do |key, value|
118
+ output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1..-1]]
119
+ end
120
+ end
104
121
 
105
- @lsblk_content ||= Facter::Core::Execution.execute('lsblk -fp', logger: log)
122
+ def populate_from_lsblk(partition_name, blkid_and_lsblk)
123
+ return {} unless available?('lsblk', blkid_and_lsblk)
106
124
 
107
- part_info = @lsblk_content.match(/#{partition_name}.*/).to_s.split(' ')
125
+ blkid_and_lsblk[:lsblk] ||= Facter::Core::Execution.execute('lsblk -fp', logger: log)
126
+
127
+ part_info = blkid_and_lsblk[:lsblk].match(/#{partition_name}.*/).to_s.split(' ')
108
128
  return {} if part_info.empty?
109
129
 
130
+ parse_part_info(part_info)
131
+ end
132
+
133
+ def parse_part_info(part_info)
110
134
  result = { filesystem: part_info[1] }
111
135
 
112
136
  if part_info.count.eql?(5)
@@ -118,27 +142,6 @@ module Facter
118
142
 
119
143
  result
120
144
  end
121
-
122
- def lsblk_command?
123
- return @lsblk_exists unless @lsblk_exists.nil?
124
-
125
- output = Facter::Core::Execution.execute('which lsblk', logger: log)
126
-
127
- @lsblk_exists = !output.empty?
128
- end
129
-
130
- def execute_and_extract_blkid_info
131
- stdout = Facter::Core::Execution.execute('blkid', logger: log)
132
- output_hash = Hash[*stdout.split(/^([^:]+):/)[1..-1]]
133
- output_hash.each do |key, value|
134
- output_hash[key] = Hash[*value.delete('"').chomp.rstrip.split(/ ([^= ]+)=/)[1..-1]]
135
- end
136
- end
137
-
138
- def browse_subdirectories(path)
139
- dirs = Dir[File.join(path, '**', '*')].select { |p| File.directory? p }
140
- dirs.select { |subdir| subdir.split('/').last.include?(path.split('/').last) }.reject(&:nil?)
141
- end
142
145
  end
143
146
  end
144
147
  end
@@ -60,7 +60,11 @@ module Facter
60
60
  def physical_devices_count
61
61
  Dir.entries('/sys/devices/system/cpu')
62
62
  .select { |dir| dir =~ /cpu[0-9]+$/ }
63
- .count { |dir| File.exist?("/sys/devices/system/cpu/#{dir}/topology/physical_package_id") }
63
+ .select { |dir| File.exist?("/sys/devices/system/cpu/#{dir}/topology/physical_package_id") }
64
+ .map do |dir|
65
+ Util::FileHelper.safe_read("/sys/devices/system/cpu/#{dir}/topology/physical_package_id").strip
66
+ end
67
+ .uniq.count
64
68
  end
65
69
 
66
70
  def build_speed(tokens)
@@ -37,6 +37,8 @@ module Facter
37
37
 
38
38
  output = exec_smbios(param[0])
39
39
  facts = param[1]
40
+ return unless output
41
+
40
42
  facts.each do |name, regx|
41
43
  @fact_list[name] = output.match(/#{regx}/)&.captures&.first
42
44
  end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class Mountpoints < BaseResolver
7
+ include Facter::FilesystemHelper
8
+ @fact_list ||= {}
9
+ @log = Facter::Log.new(self)
10
+ class << self
11
+ private
12
+
13
+ def post_resolve(fact_name)
14
+ @fact_list.fetch(fact_name) { read_mounts(fact_name) }
15
+ end
16
+
17
+ def root_device
18
+ cmdline = Util::FileHelper.safe_read('/proc/cmdline')
19
+ match = cmdline.match(/root=([^\s]+)/)
20
+ match&.captures&.first
21
+ end
22
+
23
+ def compute_device(device)
24
+ # If the "root" device, lookup the actual device from the kernel options
25
+ # This is done because not all systems symlink /dev/root
26
+ device = root_device if device == '/dev/root'
27
+ device
28
+ end
29
+
30
+ def read_mounts(fact_name) # rubocop:disable Metrics/AbcSize
31
+ mounts = []
32
+ FilesystemHelper.read_mountpoints.each do |fs|
33
+ device = compute_device(fs.name)
34
+ filesystem = fs.mount_type
35
+ path = fs.mount_point
36
+ options = fs.options.split(',').map(&:strip)
37
+
38
+ stats = FilesystemHelper.read_mountpoint_stats(path)
39
+ size_bytes = stats.bytes_total.abs
40
+ available_bytes = stats.bytes_available.abs
41
+
42
+ used_bytes = stats.bytes_used.abs
43
+ total_bytes = used_bytes + available_bytes
44
+ capacity = FilesystemHelper.compute_capacity(used_bytes, total_bytes)
45
+
46
+ size = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(size_bytes)
47
+ available = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(available_bytes)
48
+ used = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(used_bytes)
49
+
50
+ mounts << Hash[FilesystemHelper::MOUNT_KEYS.zip(FilesystemHelper::MOUNT_KEYS
51
+ .map { |v| binding.local_variable_get(v) })]
52
+ end
53
+ @fact_list[:mountpoints] = mounts
54
+ @fact_list[fact_name]
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -9,7 +9,6 @@ module Facter
9
9
  class Networking < BaseResolver
10
10
  @log = Facter::Log.new(self)
11
11
  @fact_list ||= {}
12
- @interfaces = {}
13
12
 
14
13
  class << self
15
14
  private
@@ -66,7 +65,7 @@ module Facter
66
65
 
67
66
  @log.debug("Error! #{::FFI::LastError.error}") if ioctl == -1
68
67
 
69
- @interfaces[lifreq.name][:mtu] = lifreq[:lifr_lifru][:lifru_metric]
68
+ @interfaces[lifreq.name][:mtu] ||= lifreq[:lifr_lifru][:lifru_metric]
70
69
  end
71
70
 
72
71
  def load_netmask(lifreq)
@@ -5,8 +5,9 @@ module Facter
5
5
  module Solaris
6
6
  class OsRelease < BaseResolver
7
7
  @fact_list ||= {}
8
- @os_version_regex_patterns = ['Solaris \d+ \d+/\d+ s(\d+)[sx]?_u(\d+)wos_',
9
- 'Solaris (\d+)[.](\d+)', 'Solaris (\d+)']
8
+ OS_VERSION_REGEX_PATTERNS = ['Solaris \d+ \d+/\d+ s(\d+)[sx]?_u(\d+)wos_',
9
+ 'Solaris (\d+)[.](\d+)', 'Solaris (\d+)'].freeze
10
+
10
11
  class << self
11
12
  private
12
13
 
@@ -18,7 +19,7 @@ module Facter
18
19
  result = Util::FileHelper.safe_read('/etc/release', nil)
19
20
  return @fact_list[fact_name] = nil if result.nil?
20
21
 
21
- @os_version_regex_patterns.each do |os_version_regex|
22
+ OS_VERSION_REGEX_PATTERNS.each do |os_version_regex|
22
23
  major, minor = search_for_os_version(/#{os_version_regex}/, result)
23
24
  next unless major || minor
24
25
 
@@ -5,8 +5,8 @@ module Facter
5
5
  class SshResolver < BaseResolver
6
6
  @log = Facter::Log.new(self)
7
7
  @fact_list ||= {}
8
- @file_names = %w[ssh_host_rsa_key.pub ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub]
9
- @file_paths = %w[/etc/ssh /usr/local/etc/ssh /etc /usr/local/etc /etc/opt/ssh]
8
+ FILE_NAMES = %w[ssh_host_rsa_key.pub ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub].freeze
9
+ FILE_PATHS = %w[/etc/ssh /usr/local/etc/ssh /etc /usr/local/etc /etc/opt/ssh].freeze
10
10
  class << self
11
11
  private
12
12
 
@@ -16,10 +16,10 @@ module Facter
16
16
 
17
17
  def retrieve_info(fact_name)
18
18
  ssh_list = []
19
- @file_paths.each do |file_path|
19
+ FILE_PATHS.each do |file_path|
20
20
  next unless File.directory?(file_path)
21
21
 
22
- @file_names.each do |file_name|
22
+ FILE_NAMES.each do |file_name|
23
23
  file_content = Util::FileHelper.safe_read(File.join(file_path, file_name), nil)
24
24
  next unless file_content
25
25
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.0.39' unless defined?(VERSION)
4
+ VERSION = '4.0.44' unless defined?(VERSION)
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.39
4
+ version: 4.0.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-23 00:00:00.000000000 Z
11
+ date: 2020-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -180,6 +180,7 @@ extra_rdoc_files: []
180
180
  files:
181
181
  - bin/facter
182
182
  - lib/facter.rb
183
+ - lib/facter/config.rb
183
184
  - lib/facter/custom_facts/core/aggregate.rb
184
185
  - lib/facter/custom_facts/core/directed_graph.rb
185
186
  - lib/facter/custom_facts/core/execution.rb
@@ -205,7 +206,6 @@ files:
205
206
  - lib/facter/custom_facts/util/unix_root.rb
206
207
  - lib/facter/custom_facts/util/values.rb
207
208
  - lib/facter/custom_facts/util/windows_root.rb
208
- - lib/facter/fact_groups.conf
209
209
  - lib/facter/facts/aix/aio_agent_version.rb
210
210
  - lib/facter/facts/aix/augeas/version.rb
211
211
  - lib/facter/facts/aix/disks.rb
@@ -814,6 +814,7 @@ files:
814
814
  - lib/facter/facts_utils/facts_utils.rb
815
815
  - lib/facter/facts_utils/unit_converter.rb
816
816
  - lib/facter/facts_utils/uptime_parser.rb
817
+ - lib/facter/facts_utils/virtual_detector.rb
817
818
  - lib/facter/facts_utils/windows_release_finder.rb
818
819
  - lib/facter/framework/benchmarking/timer.rb
819
820
  - lib/facter/framework/cli/cli.rb
@@ -853,7 +854,6 @@ files:
853
854
  - lib/facter/models/loaded_fact.rb
854
855
  - lib/facter/models/resolved_fact.rb
855
856
  - lib/facter/models/searched_fact.rb
856
- - lib/facter/os_hierarchy.json
857
857
  - lib/facter/patches/sysfilesystem/sys/statvfs.rb
858
858
  - lib/facter/resolvers/aio_agent_version.rb
859
859
  - lib/facter/resolvers/aix/architecture_resolver.rb
@@ -935,6 +935,7 @@ files:
935
935
  - lib/facter/resolvers/solaris/ipaddress.rb
936
936
  - lib/facter/resolvers/solaris/ldom.rb
937
937
  - lib/facter/resolvers/solaris/memory.rb
938
+ - lib/facter/resolvers/solaris/mountpoints.rb
938
939
  - lib/facter/resolvers/solaris/networking.rb
939
940
  - lib/facter/resolvers/solaris/os_release.rb
940
941
  - lib/facter/resolvers/solaris/processors.rb
@@ -1,308 +0,0 @@
1
- {
2
- "EC2": [
3
- "ec2_metadata",
4
- "ec2_userdata"
5
- ],
6
- "GCE": [
7
- "gce"
8
- ],
9
- "augeas": [
10
- "augeas",
11
- "augeasversion"
12
- ],
13
- "desktop management interface": [
14
- "dmi",
15
- "bios_vendor",
16
- "bios_version",
17
- "bios_release_date",
18
- "boardassettag",
19
- "boardmanufacturer",
20
- "boardproductname",
21
- "boardserialnumber",
22
- "chassisassettag",
23
- "manufacturer",
24
- "productname",
25
- "serialnumber",
26
- "uuid",
27
- "chassistype"
28
- ],
29
- "file system": [
30
- "mountpoints",
31
- "filesystems",
32
- "partitions"
33
- ],
34
- "hypervisors": [
35
- "hypervisors"
36
- ],
37
- "id": [
38
- "id",
39
- "gid",
40
- "identity"
41
- ],
42
- "kernel": [
43
- "kernel",
44
- "kernelversion",
45
- "kernelrelease",
46
- "kernelmajversion"
47
- ],
48
- "load_average": [
49
- "load_averages"
50
- ],
51
- "memory": [
52
- "memory",
53
- "memoryfree",
54
- "memoryfree_mb",
55
- "memorysize",
56
- "memorysize_mb",
57
- "swapfree",
58
- "swapfree_mb",
59
- "swapsize",
60
- "swapsize_mb",
61
- "swapencrypted"
62
- ],
63
- "networking": [
64
- "networking",
65
- "hostname",
66
- "ipaddress",
67
- "ipaddress6",
68
- "netmask",
69
- "netmask6",
70
- "network",
71
- "network6",
72
- "macaddress",
73
- "interfaces",
74
- "domain",
75
- "fqdn",
76
- "dhcp_servers"
77
- ],
78
- "operating system": [
79
- "os",
80
- "operatingsystem",
81
- "osfamily",
82
- "operatingsystemrelease",
83
- "operatingsystemmajrelease",
84
- "hardwaremodel",
85
- "architecture",
86
- "lsbdistid",
87
- "lsbdistrelease",
88
- "lsbdistcodename",
89
- "lsbdistdescription",
90
- "lsbmajdistrelease",
91
- "lsbminordistrelease",
92
- "lsbrelease",
93
- "macosx_buildversion",
94
- "macosx_productname",
95
- "macosx_productversion",
96
- "macosx_productversion_major",
97
- "macosx_productversion_minor",
98
- "windows_edition_id",
99
- "windows_installation_type",
100
- "windows_product_name",
101
- "windows_release_id",
102
- "system32",
103
- "selinux",
104
- "selinux_enforced",
105
- "selinux_policyversion",
106
- "selinux_current_mode",
107
- "selinux_config_mode",
108
- "selinux_config_policy"
109
- ],
110
- "path": [
111
- "path"
112
- ],
113
- "processor": [
114
- "processors",
115
- "processorcount",
116
- "physicalprocessorcount",
117
- "hardwareisa"
118
- ],
119
- "ssh": [
120
- "ssh",
121
- "sshdsakey",
122
- "sshrsakey",
123
- "sshecdsakey",
124
- "sshed25519key",
125
- "sshfp_dsa",
126
- "sshfp_rsa",
127
- "sshfp_ecdsa",
128
- "sshfp_ed25519"
129
- ],
130
- "system profiler": [
131
- "system_profiler",
132
- "sp_boot_mode",
133
- "sp_boot_rom_version",
134
- "sp_boot_volume",
135
- "sp_cpu_type",
136
- "sp_current_processor_speed",
137
- "sp_kernel_version",
138
- "sp_l2_cache_core",
139
- "sp_l3_cache",
140
- "sp_local_host_name",
141
- "sp_machine_model",
142
- "sp_machine_name",
143
- "sp_number_processors",
144
- "sp_os_version",
145
- "sp_packages",
146
- "sp_physical_memory",
147
- "sp_platform_uuid",
148
- "sp_secure_vm",
149
- "sp_serial_number",
150
- "sp_smc_version_system",
151
- "sp_uptime",
152
- "sp_user_name"
153
- ],
154
- "timezone": [
155
- "timezone"
156
- ],
157
- "uptime": [
158
- "system_uptime",
159
- "uptime",
160
- "uptime_days",
161
- "uptime_hours",
162
- "uptime_seconds"
163
- ],
164
- "virtualization": [
165
- "virtual",
166
- "is_virtual",
167
- "cloud"
168
- ],
169
- "legacy": [
170
- "architecture",
171
- "augeasversion",
172
- "bios_release_date",
173
- "bios_vendor",
174
- "bios_version",
175
- "blockdevice_*_model",
176
- "blockdevice_*_size",
177
- "blockdevice_*_vendor",
178
- "blockdevices",
179
- "boardassettag",
180
- "boardmanufacturer",
181
- "boardproductname",
182
- "boardserialnumber",
183
- "chassisassettag",
184
- "chassistype",
185
- "dhcp_servers",
186
- "domain",
187
- "fqdn",
188
- "gid",
189
- "hardwareisa",
190
- "hardwaremodel",
191
- "hostname",
192
- "id",
193
- "interfaces",
194
- "ipaddress",
195
- "ipaddress_.*",
196
- "ipaddress_*",
197
- "ipaddress6",
198
- "ipaddress6_.*",
199
- "ipaddress6_*",
200
- "ldom_*",
201
- "lsbdistcodename",
202
- "lsbdistdescription",
203
- "lsbdistid",
204
- "lsbdistrelease",
205
- "lsbmajdistrelease",
206
- "lsbminordistrelease",
207
- "lsbrelease",
208
- "macaddress",
209
- "macaddress_.*",
210
- "macaddress_*",
211
- "macosx_buildversion",
212
- "macosx_productname",
213
- "macosx_productversion",
214
- "macosx_productversion_major",
215
- "macosx_productversion_minor",
216
- "manufacturer",
217
- "memoryfree",
218
- "memoryfree_mb",
219
- "memorysize",
220
- "memorysize_mb",
221
- "mtu_.*",
222
- "mtu_*",
223
- "netmask",
224
- "netmask_.*",
225
- "netmask_*",
226
- "netmask6",
227
- "netmask6_.*",
228
- "netmask6_*",
229
- "network",
230
- "network_.*",
231
- "network_*",
232
- "network6",
233
- "network6_.*",
234
- "network6_*",
235
- "operatingsystem",
236
- "operatingsystemmajrelease",
237
- "operatingsystemrelease",
238
- "osfamily",
239
- "physicalprocessorcount",
240
- "processor.*",
241
- "processor*",
242
- "processorcount",
243
- "productname",
244
- "rubyplatform",
245
- "rubysitedir",
246
- "rubyversion",
247
- "scope6",
248
- "scope6_.*",
249
- "selinux",
250
- "selinux_config_mode",
251
- "selinux_config_policy",
252
- "selinux_current_mode",
253
- "selinux_enforced",
254
- "selinux_policyversion",
255
- "serialnumber",
256
- "sp_*",
257
- "sp_boot_mode",
258
- "sp_boot_rom_version",
259
- "sp_boot_volume",
260
- "sp_cpu_type",
261
- "sp_current_processor_speed",
262
- "sp_kernel_version",
263
- "sp_l2_cache_core",
264
- "sp_l3_cache",
265
- "sp_local_host_name",
266
- "sp_machine_model",
267
- "sp_machine_name",
268
- "sp_number_processors",
269
- "sp_os_version",
270
- "sp_packages",
271
- "sp_physical_memory",
272
- "sp_platform_uuid",
273
- "sp_secure_vm",
274
- "sp_serial_number",
275
- "sp_smc_version_system",
276
- "sp_uptime",
277
- "sp_user_name",
278
- "ssh.*key",
279
- "ssh*key",
280
- "sshfp_.*",
281
- "sshfp_*",
282
- "swapencrypted",
283
- "swapfree",
284
- "swapfree_mb",
285
- "swapsize",
286
- "swapsize_mb",
287
- "system32",
288
- "uptime",
289
- "uptime_days",
290
- "uptime_hours",
291
- "uptime_seconds",
292
- "uuid",
293
- "windows_edition_id",
294
- "windows_installation_type",
295
- "windows_product_name",
296
- "windows_release_id",
297
- "xendomains",
298
- "zone_*_brand",
299
- "zone_*_id",
300
- "zone_*_iptype",
301
- "zone_*_name",
302
- "zone_*_path",
303
- "zone_*_status",
304
- "zone_*_uuid",
305
- "zonename",
306
- "zones"
307
- ]
308
- }