Class: Inspec::Config
- Inherits:
-
Object
- Object
- Inspec::Config
- Extended by:
- Forwardable
- Includes:
- Plugin::V2::FilterPredicates
- Defined in:
- lib/inspec/config.rb
Defined Under Namespace
Classes: Defaults
Constant Summary collapse
- GENERIC_CREDENTIALS =
These are options that apply to any transport
%w{ backend logger sudo sudo_password sudo_command sudo_options shell shell_options shell_command }.freeze
- AUDIT_LOG_OPTIONS =
%w{ audit_log_location enable_audit_log audit_log_app_name }.freeze
- KNOWN_VERSIONS =
[ "1.1", "1.2", ].freeze
Instance Attribute Summary collapse
-
#final_options ⇒ Object
readonly
Returns the value of attribute final_options.
Class Method Summary collapse
-
.__reset ⇒ Object
clear the cached config.
-
.cached ⇒ Object
Use this to get a cached version of the config.
- .cached=(cfg) ⇒ Object
-
.mock(opts = {}) ⇒ Object
This makes it easy to make a config with a mock backend.
Instance Method Summary collapse
- #allow_unsigned_profiles? ⇒ Boolean
- #diagnose ⇒ Object
-
#fetch_plugin_config(plugin_name) ⇒ Object
———————————————————————–# Handling Plugin Data ———————————————————————–#.
-
#initialize(cli_opts = {}, cfg_io = nil, command_name = nil) ⇒ Config
constructor
This gets called when the first config is created.
- #merge_plugin_config(plugin_name, additional_plugin_config) ⇒ Object
- #set_plugin_config(plugin_name, plugin_config) ⇒ Object
-
#telemetry_options ⇒ Hash
return all telemetry options from config.
-
#unpack_train_credentials ⇒ Object
Returns a Hash with Symbol keys as follows: backend: machine name of the Train transport needed If present, any of the GENERIC_CREDENTIALS.
Methods included from Plugin::V2::FilterPredicates
#inspec_plugin_name?, #train_plugin_name?, #valid_plugin_name?
Constructor Details
#initialize(cli_opts = {}, cfg_io = nil, command_name = nil) ⇒ Config
This gets called when the first config is created.
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/inspec/config.rb', line 62 def initialize(cli_opts = {}, cfg_io = nil, command_name = nil) @command_name = command_name || (ARGV.empty? ? nil : ARGV[0].to_sym) @defaults = Defaults.for_command(@command_name) @plugin_cfg = {} @cli_opts = cli_opts.dup cfg_io = resolve_cfg_io(@cli_opts, cfg_io) @cfg_file_contents = read_cfg_file_io(cfg_io) @merged_options = @final_options = self.class.cached = self end |
Instance Attribute Details
#final_options ⇒ Object (readonly)
Returns the value of attribute final_options.
44 45 46 |
# File 'lib/inspec/config.rb', line 44 def @final_options end |
Class Method Details
.__reset ⇒ Object
clear the cached config
165 166 167 |
# File 'lib/inspec/config.rb', line 165 def self.__reset @cached_config = nil end |
.cached ⇒ Object
Use this to get a cached version of the config. This prevents you from being required to pass it around everywhere.
53 54 55 |
# File 'lib/inspec/config.rb', line 53 def self.cached @cached_config ||= {} end |
.cached=(cfg) ⇒ Object
57 58 59 |
# File 'lib/inspec/config.rb', line 57 def self.cached=(cfg) @cached_config ||= cfg end |
Instance Method Details
#allow_unsigned_profiles? ⇒ Boolean
90 91 92 |
# File 'lib/inspec/config.rb', line 90 def allow_unsigned_profiles? self["allow_unsigned_profiles"] || ENV["CHEF_ALLOW_UNSIGNED_PROFILES"] end |
#diagnose ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/inspec/config.rb', line 76 def diagnose return unless self[:diagnose] puts "InSpec version: #{Inspec::VERSION}" puts "Train version: #{Train::VERSION}" puts "Command line configuration:" pp @cli_opts puts "JSON configuration file:" pp @cfg_file_contents puts "Merged configuration:" pp @merged_options puts end |
#fetch_plugin_config(plugin_name) ⇒ Object
147 148 149 |
# File 'lib/inspec/config.rb', line 147 def fetch_plugin_config(plugin_name) Thor::CoreExt::HashWithIndifferentAccess.new(@plugin_cfg[plugin_name] || {}) end |
#merge_plugin_config(plugin_name, additional_plugin_config) ⇒ Object
157 158 159 160 161 162 |
# File 'lib/inspec/config.rb', line 157 def merge_plugin_config(plugin_name, additional_plugin_config) plugin_name = plugin_name.to_s unless plugin_name.is_a? String @plugin_cfg[plugin_name] = {} if @plugin_cfg[plugin_name].nil? @plugin_cfg[plugin_name].merge!(additional_plugin_config) end |
#set_plugin_config(plugin_name, plugin_config) ⇒ Object
151 152 153 154 155 |
# File 'lib/inspec/config.rb', line 151 def set_plugin_config(plugin_name, plugin_config) plugin_name = plugin_name.to_s unless plugin_name.is_a? String @plugin_cfg[plugin_name] = plugin_config end |
#telemetry_options ⇒ Hash
return all telemetry options from config
96 97 98 |
# File 'lib/inspec/config.rb', line 96 def .select { |key, _| key.include?("telemetry") } end |
#unpack_train_credentials ⇒ Object
Returns a Hash with Symbol keys as follows:
backend: machine name of the Train transport needed
If present, any of the GENERIC_CREDENTIALS.
All other keys are specific to the backend.
The credentials are gleaned from:
* the Train transport defaults. Train handles this on transport creation,
so this method doesn't load defaults.
* individual InSpec CLI options (which in many cases may have the
transport name prefixed, which is stripped before being added
to the creds hash)
* the --target CLI option, which is interpreted:
- as a transport://credset format, which looks up the creds in
the config file in the credentials section
- as an arbitrary URI, which is parsed by Train.unpack_target_from_uri
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/inspec/config.rb', line 120 def unpack_train_credentials # Internally, use indifferent access while we build the creds credentials = Thor::CoreExt::HashWithIndifferentAccess.new({}) # Helper methods prefixed with _utc_ (Unpack Train Credentials) credentials.merge!(_utc_generic_credentials) # Only runs this block when preview flag CHEF_PREVIEW_AUDIT_LOGGING is set Inspec.with_feature("inspec-audit-logging") { credentials.merge!() } _utc_determine_backend(credentials) transport_name = credentials[:backend].to_s _utc_merge_credset(credentials, transport_name) (credentials, transport_name) # Convert to all-Symbol keys credentials.each_with_object({}) do |(option, value), creds| creds[option.to_sym] = value creds end end |