inspec/lib/plugins/inspec-parallel/README.md
Nikita Mathur f04a31d822
CFINSPEC-120 inspec parallel feature (#5975)
* Initial commit - Inspec parallel setup

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Added dry run option functionality and renamed subcommand

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Runner logic parsing options file and executing cmds

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Validation logic changes for dry run and run commands

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Validator bug fix when using options like --sudo with no value

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* initial commit for using default options

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Logic to not parse empty lines and comments and some cleanup

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Functional test cases added

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Test cases fix and bug fix in validator

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Add logic to append default options passed from cli

Signed-off-by: Sonu Saha <sonu.saha@progress.com>

* Add test for default options and extend options-file-1.txt

Signed-off-by: Sonu Saha <sonu.saha@progress.com>

* Add comments in options-file-2 and 3

Signed-off-by: Sonu Saha <sonu.saha@progress.com>

* Bug fix and some refactoring

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Changes from pair programming

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Fixed incorrect line no used in dry run validation & added verbose option

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Initial code with parallel gem setup

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Error handling and some changes in parallel running result

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Working spawn and fork implementation; no pipes or error handling

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* CFINSPEC-143 Child status reporter plugin

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Read status from children using pipes; Windows implementation is likely broken

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Linting

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Removed parallel gem and it's code usage

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Erb templating and option file as shell/powershell option added

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Added missing raise error in content reading logic

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Adding for the sake of keeping bash file syntax correct

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Switch to select() polling, enabling Windows support; also add a terrible hack to the child-status reporter

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Move child-status reporter into inspec-parallel plugin to reduce pollution

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Rename a bunch of things, remove some instance variables, always validate, and use Inspec::UI exit codes

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Rework validation to be Thor-based; add logic to inject child-status reporter

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Linting

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Refactor parent UI to make it object oriented

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Add a prototype 'status' super-reporter

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Improve status UI edge cases, add info to output, make default

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Error handling added when running bash instead of system check

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Daemon run for background process in unix system for parallel runs

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Added logic to cleanup daemon process'

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Review changes for background command name and windows handling

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Error raised with error handling class for options file

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Fix to not intialise ui when background run is opted

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* typo fix in child reporter append logic in validator

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Changes to trap control c and exit gracefully

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Moved ctl c handling code to command class

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Linter fixes

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Error and runner logging added

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* ERB pid option to use child process id for generating result output

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Renamed 38125 to Process.pid for clear notation

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Log path option added for inspec parallel

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Adjust ERB eval

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* STDERR logging added

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Fix of --bg with ui

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Deleting log files if empty and status super reporter to show done

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>

* Docs for InSpec Parallel

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Doc Review

Signed-off-by: Deepa Kumaraswamy <dkumaras@progress.com>

* Grammar corrections

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

Co-authored-by: Sonu Saha <sonu.saha@progress.com>
Co-authored-by: Clinton Wolfe <clintoncwolfe@gmail.com>
Co-authored-by: Deepa Kumaraswamy <dkumaras@progress.com>
2022-06-13 13:58:41 -04:00

857 B

Parallel Plugin

Plugin to handle parallel InSpec scan operations over multiple targets.

parallel cli_command

Implements the inspec parallel exec CLI command.

child-status Plugin

This reporter is an InSpec Streaming Reporter. It is used internally by inspec parallel to provide status updates on child processes.

What This Plugin Does

For each control executed, after it is complete, the plugin emits a line to STDOUT like:

12/P/24/Control Title Here

When the run is complete, the single line 'EOF_MARKER' is emitted.

Where:

  • 12 is the number of the control (12th seen out of all controls in all profiles)
  • P indicates that it Passed (Also F = Failed, S = Skipped, E = Errored)
  • 24 is the total number of controls in the run
  • "Control Title Here" is the title (or if title is missing, id) of the last executed control