How to use supported method of Inspec Package

Best Inspec_ruby code snippet using Inspec.supported

runner.rb

Source:runner.rb Github

copy

Full Screen

...67 def warn_for_deprecated_config_values!68 deprecated_config_values = (node["audit"].keys & DEPRECATED_CONFIG_VALUES)69 if deprecated_config_values.any?70 values = deprecated_config_values.sort.map { |v| "'#{v}'" }.join(", ")71 logger.warn "audit cookbook config values #{values} are not supported in #{ChefUtils::Dist::Infra::PRODUCT}'s Compliance Phase."72 end73 end74 def report(report = nil)75 logger.info "Starting Chef Infra Compliance Phase"76 report ||= generate_report77 # This is invoked at report-time instead of with the normal validations at node loaded,78 # because we want to ensure that it is visible in the output - and not lost in back-scroll.79 warn_for_deprecated_config_values!80 if report.empty?81 logger.error "Compliance report was not generated properly, skipped reporting"82 return83 end84 Array(node["audit"]["reporter"]).each do |reporter_type|85 logger.info "Reporting to #{reporter_type}"86 @reporters[reporter_type].send_report(report)87 end88 logger.info "Chef Infra Compliance Phase Complete"89 end90 def inspec_opts91 inputs = node["audit"]["attributes"].to_h92 if node["audit"]["chef_node_attribute_enabled"]93 inputs["chef_node"] = node.to_h94 inputs["chef_node"]["chef_environment"] = node.chef_environment95 end96 {97 backend_cache: node["audit"]["inspec_backend_cache"],98 inputs: inputs,99 logger: logger,100 output: node["audit"]["quiet"] ? ::File::NULL : STDOUT,101 report: true,102 reporter: ["json-automate"],103 reporter_backtrace_inclusion: node["audit"]["result_include_backtrace"],104 reporter_message_truncation: node["audit"]["result_message_limit"],105 waiver_file: Array(node["audit"]["waiver_file"]),106 }107 end108 def inspec_profiles109 profiles = node["audit"]["profiles"]110 unless profiles.respond_to?(:map) && profiles.all? { |_, p| p.respond_to?(:transform_keys) && p.respond_to?(:update) }111 raise "CMPL010: #{Inspec::Dist::PRODUCT_NAME} profiles specified in an unrecognized format, expected a hash of hashes."112 end113 profiles.map do |name, profile|114 profile.transform_keys(&:to_sym).update(name: name)115 end116 end117 def load_fetchers!118 case node["audit"]["fetcher"]119 when "chef-automate"120 require_relative "fetcher/automate"121 when "chef-server"122 require_relative "fetcher/chef_server"123 when nil124 # intentionally blank125 end126 end127 def generate_report(opts: inspec_opts, profiles: inspec_profiles)128 load_fetchers!129 logger.debug "Options are set to: #{opts}"130 runner = ::Inspec::Runner.new(opts)131 if profiles.empty?132 failed_report("No #{Inspec::Dist::PRODUCT_NAME} profiles are defined.")133 return134 end135 profiles.each { |target| runner.add_target(target) }136 logger.info "Running profiles from: #{profiles.inspect}"137 runner.run138 runner.report.tap do |r|139 logger.debug "Compliance Report #{r}"140 end141 rescue Inspec::FetcherFailure => e142 failed_report("Cannot fetch all profiles: #{profiles}. Please make sure you're authenticated and the server is reachable. #{e.message}")143 rescue => e144 failed_report(e.message)145 end146 # In case InSpec raises a runtime exception without providing a valid report,147 # we make one up and add two new fields to it: `status` and `status_message`148 def failed_report(err)149 logger.error "#{Inspec::Dist::PRODUCT_NAME} has raised a runtime exception. Generating a minimal failed report."150 logger.error err151 {152 "platform": {153 "name": "unknown",154 "release": "unknown",155 },156 "profiles": [],157 "statistics": {158 "duration": 0.0000001,159 },160 "version": Inspec::VERSION,161 "status": "failed",162 "status_message": err,163 }164 end165 # extracts relevant node data166 def node_info167 chef_server_uri = URI(Chef::Config[:chef_server_url])168 runlist_roles = node.run_list.select { |item| item.type == :role }.map(&:name)169 runlist_recipes = node.run_list.select { |item| item.type == :recipe }.map(&:name)170 {171 node: node.name,172 os: {173 release: node["platform_version"],174 family: node["platform"],175 },176 environment: node.environment,177 roles: runlist_roles,178 recipes: runlist_recipes,179 policy_name: node.policy_name || "",180 policy_group: node.policy_group || "",181 chef_tags: node.tags,182 organization_name: chef_server_uri.path.split("/").last || "",183 source_fqdn: chef_server_uri.host || "",184 ipaddress: node["ipaddress"],185 fqdn: node["fqdn"],186 }187 end188 def reporter(reporter_type)189 case reporter_type190 when "chef-automate"191 require_relative "reporter/automate"192 opts = {193 control_results_limit: node["audit"]["control_results_limit"],194 entity_uuid: node["chef_guid"],195 insecure: node["audit"]["insecure"],196 node_info: node_info,197 run_id: run_id,198 run_time_limit: node["audit"]["run_time_limit"],199 }200 Chef::Compliance::Reporter::Automate.new(opts)201 when "chef-server-automate"202 require_relative "reporter/chef_server_automate"203 opts = {204 control_results_limit: node["audit"]["control_results_limit"],205 entity_uuid: node["chef_guid"],206 insecure: node["audit"]["insecure"],207 node_info: node_info,208 run_id: run_id,209 run_time_limit: node["audit"]["run_time_limit"],210 url: chef_server_automate_url,211 }212 Chef::Compliance::Reporter::ChefServerAutomate.new(opts)213 when "json-file"214 require_relative "reporter/json_file"215 path = node.dig("audit", "json_file", "location")216 Chef::Compliance::Reporter::JsonFile.new(file: path)217 when "audit-enforcer"218 require_relative "reporter/compliance_enforcer"219 Chef::Compliance::Reporter::ComplianceEnforcer.new220 when "cli"221 require_relative "reporter/cli"222 Chef::Compliance::Reporter::Cli.new223 end224 end225 def chef_server_automate_url226 url = if node["audit"]["server"]227 URI(node["audit"]["server"])228 else229 URI(Chef::Config[:chef_server_url]).tap do |u|230 u.path = ""231 end232 end233 org = Chef::Config[:chef_server_url].split("/").last234 url.path = File.join(url.path, "organizations/#{org}/data-collector")235 url236 end237 # Load the resources required for this runner, and validate configuration238 # is correct to proceed. Requires node state to be loaded.239 # Will raise exception if fetcher is not valid, if a reporter is not valid,240 # or the configuration required by a reporter is not provided.241 def load_and_validate!242 return unless enabled?243 @reporters = {}244 # Note that the docs don't say you can use an array, but our implementation245 # supports it.246 Array(node["audit"]["reporter"]).each do |type|247 unless SUPPORTED_REPORTERS.include? type248 raise "CMPL003: '#{type}' found in node['audit']['reporter'] is not a supported reporter for Compliance Phase. Supported reporters are: #{SUPPORTED_REPORTERS.join(", ")}. For more information, see the documentation at https://docs.chef.io/chef_compliance_phase#reporters"249 end250 @reporters[type] = reporter(type)251 @reporters[type].validate_config!252 end253 unless (fetcher = node["audit"]["fetcher"]).nil?254 unless SUPPORTED_FETCHERS.include? fetcher255 raise "CMPL002: Unrecognized Compliance Phase fetcher (node['audit']['fetcher'] = #{fetcher}). Supported fetchers are: #{SUPPORTED_FETCHERS.join(", ")}, or nil. For more information, see the documentation at https://docs.chef.io/chef_compliance_phase#fetch-profiles"256 end257 end258 @validation_passed = true259 end260 end261 end262end...

Full Screen

Full Screen

windows_updates.rb

Source:windows_updates.rb Github

copy

Full Screen

...41 name 'windows_update'42 desc 'Use the windows_update InSpec audit resource to test available or installed updates on Microsoft Windows.'43 def initialize44 super()45 # verify that this resource is only supported on Windows46 return skip_resource 'The `windows_update` resource is not supported on your OS.' unless inspec.os.windows?47 @update_mgmt = select_update_mgmt48 end49 # returns all available updates50 def all51 updates = fetch_updates52 updates.map { |update| WindowsUpdate.new(update) }53 end54 # returns all important updates55 def important56 updates = fetch_updates57 updates58 .select do |update|59 @update_mgmt.important?(update)60 end.map do |update| # rubocop:disable Style/MultilineBlockChain...

Full Screen

Full Screen

linux_updates.rb

Source:linux_updates.rb Github

copy

Full Screen

...16 # @update_mgmt = RHELUpdateFetcher.new(inspec)17 # elsif inspec.os.debian?18 # @update_mgmt = UbuntuUpdateFetcher.new(inspec)19 # end20 # return skip_resource 'The `linux_update` resource is not supported on your OS.' if @update_mgmt.nil?21 # end22 # Since Amazon Linux is based on RedHat, they may use the same method.23 def initialize24 case inspec.os[:family]25 when 'redhat', 'amazon'26 @update_mgmt = RHELUpdateFetcher.new(inspec)27 when 'debian'28 @update_mgmt = UbuntuUpdateFetcher.new(inspec)29 when 'suse'30 @update_mgmt = SuseUpdateFetcher.new(inspec)31 end32 skip_resource 'The `linux_update` resource is not supported on your OS.' if @update_mgmt.nil?33 end34 def updates35 return [] if @update_mgmt.nil?36 u = @update_mgmt.updates37 return [] if u.nil? || u.empty?38 u['available']39 end40 def uptodate?41 return nil if @update_mgmt.nil?42 u = @update_mgmt.updates43 return false if u.nil? || !u['available'].empty?44 l = @update_mgmt.patches45 return false if l.nil? || !l.empty?46 true...

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1class Inspec::Resources::File < Inspec.resource(1)2 def initialize(path)3class Inspec::Resources::File < Inspec.resource(1)4 def initialize(path)5class Inspec::Resources::File < Inspec.resource(1)6 def initialize(path)7class Inspec::Resources::File < Inspec.resource(1)8 def initialize(path)9class Inspec::Resources::File < Inspec.resource(1)10 def initialize(path)11class Inspec::Resources::File < Inspec.resource(1)12 def initialize(path)13class Inspec::Resources::File < Inspec.resource(1)14 def initialize(path)15class Inspec::Resources::File < Inspec.resource(1)16 def initialize(path)17class Inspec::Resources::File < Inspec.resource(1)18 def initialize(path)19class Inspec::Resources::File < Inspec.resource(

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1 describe aws_iam_access_keys.where { created_days_ago > 90 } do2 it { should_not exist }3{4 {5 {6 }7 {8 {9 }10 "tags": {11 },

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1describe file(/tmp1.rb') do2 it { should exist }3describe inspe.file('/tmp2.rb') do4 it { should exist }5decribe file('/tmp/3.rb do6 it { should exist }7 it { should exist }8describe file('/tmp/5.rb') do9 it { should exist }10describe inspec.file('/tmp/6.rb') do11 it { should exist }12describe file('/ mp/7.rbun do13 itsupported exist }14 it { should exist }15describe file('/tmp/9.rb') do16 it { should exist }17describe inspec.file('/tmp/10.rb') do18 it { should exist }19describe file('/tmp/11.rb') do20 it { should exist }21describe inspec.file('/tmp/12of Inspec class

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1describe file('/tmp/1.rb') do2 it { should exist }3describe inspec.file('/tmp/2.rb') do4 it { should exist }5describe file('/tmp/3.rb') do6 it { should exist }7describe inspec.file('/tmp/4.rb') do8 it { should exist }9describe file('/tmp/5.rb') do10 it { should exist }11describe inspec.file('/tmp/6.rb') do12 it { should exist }13describe file('/tmp/7.rb') do14 it { should exist }15describe inspec.file('/tmp/8.rb') do16 it { should exist }17describe file('/tmp/9.rb') do18 it { should exist }19describe inspec.file('/tmp/10.rb') do20 it { should exist }21describe file('/tmp/11.rb') do22 it { should exist }23describe inspec.file('/tmp/12

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1 it { should eq 'ubuntu' }2 it { should eq 'debian' }3 it { should eq '14.04' }4 it { should eq 'ubuntu' }5 it { should eq 'trusty' }6 it { should eq 'x86_64' }7 it { should eq 'debian' }8 it { should eq 'ubuntu' }9 it { should eq 'debian' }10 it { should eq 'ubuntu' }11 it { should eq 'debian' }12 it { should eq 'ubuntu' }13 it { should eq 'debian' }14 it { should eq 'ubuntu' }15 it { should eq 'debian' }16 it { should eq 'ubuntu' }17 it { should eq 'debian' }18 it { should eq 'ubuntu' }19 it { should eq 'debian' }20 it { should eq 'ubuntu' }21 it { should eq 'debian' }22 it { should eq 'ubuntu' }

Full Screen

Full Screen

supported

Using AI Code Generation

copy

Full Screen

1 it { should eq 'ubuntu' }2 it { should eq 'debian' }3 it { should eq '14.04' }4 it { should eq 'ubuntu' }5 it { should eq 'trusty' }6 it { should eq 'x86_64' }7 it { should eq 'debian' }8 it { should eq 'ubuntu' }9 it { should eq 'debian' }10 it { should eq 'ubuntu' }11 it { should eq 'debian' }12 it { should eq 'ubuntu' }13 it { should eq 'debian' }14 it { should eq 'ubuntu' }15 it { should eq 'debian' }16 it { should eq 'ubuntu' }17 it { should eq 'debian' }18 it { should eq 'ubuntu' }19 it { should eq 'debian' }20 it { should eq 'ubuntu' }21 it { should eq 'debian' }22 it { should eq 'ubuntu' }

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Inspec_ruby automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful