facter 4.0.39 → 4.0.44

Sign up to get free protection for your applications and to get access to all the features.
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
- }