compliance_engine 0.3.0 → 0.4.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/compliance_engine.gemspec +1 -1
- data/lib/compliance_engine/ce.rb +1 -1
- data/lib/compliance_engine/ces.rb +1 -1
- data/lib/compliance_engine/check.rb +1 -1
- data/lib/compliance_engine/checks.rb +1 -1
- data/lib/compliance_engine/cli.rb +1 -1
- data/lib/compliance_engine/collection.rb +1 -1
- data/lib/compliance_engine/component.rb +3 -3
- data/lib/compliance_engine/control.rb +1 -1
- data/lib/compliance_engine/controls.rb +1 -1
- data/lib/compliance_engine/data.rb +18 -18
- data/lib/compliance_engine/data_loader/file.rb +2 -2
- data/lib/compliance_engine/data_loader/json.rb +2 -2
- data/lib/compliance_engine/data_loader/yaml.rb +2 -2
- data/lib/compliance_engine/data_loader.rb +1 -1
- data/lib/compliance_engine/environment_loader/zip.rb +2 -2
- data/lib/compliance_engine/environment_loader.rb +2 -2
- data/lib/compliance_engine/module_loader.rb +3 -3
- data/lib/compliance_engine/profile.rb +1 -1
- data/lib/compliance_engine/profiles.rb +1 -1
- data/lib/compliance_engine/puppet_logger.rb +49 -0
- data/lib/compliance_engine/version.rb +1 -1
- data/lib/compliance_engine.rb +16 -4
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f5129c30257114df1399ae314ff6a0fb5d383de5bd4782b8b31dc060ea274870
|
|
4
|
+
data.tar.gz: 8dfaa1d2feaf1a43ea6551851eac5a586f2d4e2b4148efcd14cad21c32c93cba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b4839e2648adfc6c1ea91d16c45a5494a6ad4da6521d816e16b9d0b3127b80d696d6f0cbb5249294cf6e0f21177809fbe9b8efd6c3665e3aae1bee6a02570134
|
|
7
|
+
data.tar.gz: 68a0a04f93e3c007eec4287a92d6d19ace0ba37e9a739200474802ef28c6cb24b01257cec5e23f8b8e2cb8f29cf397641ac1e2fc5a1c117ca1db43f1932c2c3d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
### 0.4.0 / 2026-04-20
|
|
2
|
+
* Route Puppet Hiera backend log messages through Puppet's logging system (#96)
|
|
3
|
+
* Fix JRuby compatibility: convert internal requires to require_relative so the library loads correctly inside Puppet Server / OpenVox Server when installed as a Puppet module rather than a standalone gem
|
|
4
|
+
* Replace PDK with puppet-modulebuilder for Puppet Forge builds
|
|
5
|
+
* Add Beaker acceptance test suite covering puppet apply, server/agent, cache leakage, and environment leakage scenarios
|
|
6
|
+
|
|
1
7
|
### 0.3.0 / 2026-03-19
|
|
2
8
|
* Hash-like Collection methods return Collection objects (#37)
|
|
3
9
|
|
data/compliance_engine.gemspec
CHANGED
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
spec.require_paths = ['lib']
|
|
26
26
|
|
|
27
27
|
spec.add_dependency 'deep_merge', '~> 1.2'
|
|
28
|
-
spec.add_dependency 'irb', '~> 1.14'
|
|
28
|
+
spec.add_dependency 'irb', '~> 1.14' unless RUBY_PLATFORM == 'java'
|
|
29
29
|
spec.add_dependency 'logger', '~> 1.4'
|
|
30
30
|
spec.add_dependency 'observer', '~> 0.1'
|
|
31
31
|
spec.add_dependency 'rubyzip', '>= 2.3', '< 4'
|
data/lib/compliance_engine/ce.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative '../compliance_engine'
|
|
4
4
|
require 'deep_merge'
|
|
5
5
|
|
|
6
6
|
# A generic compliance engine data component
|
|
@@ -216,14 +216,14 @@ class ComplianceEngine::Component
|
|
|
216
216
|
|
|
217
217
|
if fragment['remediation'].key?('disabled')
|
|
218
218
|
message = "Remediation disabled for #{fragment}"
|
|
219
|
-
reason = fragment['remediation']['disabled']&.map { |value| value['reason'] }&.
|
|
219
|
+
reason = fragment['remediation']['disabled']&.map { |value| value['reason'] }&.compact&.join("\n")
|
|
220
220
|
message += "\n#{reason}" unless reason.nil?
|
|
221
221
|
ComplianceEngine.log.info message
|
|
222
222
|
return true
|
|
223
223
|
end
|
|
224
224
|
|
|
225
225
|
if fragment['remediation'].key?('risk')
|
|
226
|
-
risk_level = fragment['remediation']['risk']&.map { |value| value['level'] }&.
|
|
226
|
+
risk_level = fragment['remediation']['risk']&.map { |value| value['level'] }&.grep(Integer)&.max
|
|
227
227
|
if risk_level.is_a?(Integer) && risk_level >= enforcement_tolerance
|
|
228
228
|
ComplianceEngine.log.info "Remediation risk #{risk_level} exceeds enforcement enforcement_tolerance #{enforcement_tolerance} for #{fragment}"
|
|
229
229
|
return true
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
3
|
+
require_relative '../compliance_engine'
|
|
4
|
+
require_relative 'version'
|
|
5
|
+
require_relative 'component'
|
|
6
|
+
require_relative 'ce'
|
|
7
|
+
require_relative 'check'
|
|
8
|
+
require_relative 'control'
|
|
9
|
+
require_relative 'profile'
|
|
10
|
+
require_relative 'collection'
|
|
11
|
+
require_relative 'ces'
|
|
12
|
+
require_relative 'checks'
|
|
13
|
+
require_relative 'controls'
|
|
14
|
+
require_relative 'profiles'
|
|
15
|
+
|
|
16
|
+
require_relative 'data_loader'
|
|
17
|
+
require_relative 'data_loader/json'
|
|
18
|
+
require_relative 'data_loader/yaml'
|
|
19
|
+
require_relative 'module_loader'
|
|
20
|
+
require_relative 'environment_loader'
|
|
21
21
|
|
|
22
22
|
require 'deep_merge'
|
|
23
23
|
require 'json'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../../compliance_engine'
|
|
4
|
+
require_relative '../data_loader'
|
|
5
5
|
|
|
6
6
|
# Load compliance engine data from a file
|
|
7
7
|
class ComplianceEngine::DataLoader::File < ComplianceEngine::DataLoader
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../../compliance_engine'
|
|
4
|
+
require_relative '../environment_loader'
|
|
5
5
|
require 'zip/filesystem'
|
|
6
6
|
|
|
7
7
|
# Load compliance engine data from a zip file containing a Puppet environment
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../compliance_engine'
|
|
4
|
+
require_relative 'module_loader'
|
|
5
5
|
|
|
6
6
|
# Load compliance engine data from a Puppet environment
|
|
7
7
|
class ComplianceEngine::EnvironmentLoader
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
require_relative '../compliance_engine'
|
|
4
|
+
require_relative 'data_loader/json'
|
|
5
|
+
require_relative 'data_loader/yaml'
|
|
6
6
|
|
|
7
7
|
# Load compliance engine data from a Puppet module
|
|
8
8
|
class ComplianceEngine::ModuleLoader
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ComplianceEngine
|
|
4
|
+
# Routes ComplianceEngine log messages through Puppet's logging system.
|
|
5
|
+
# Used as a drop-in replacement for the default Logger when running inside Puppet.
|
|
6
|
+
class PuppetLogger
|
|
7
|
+
def initialize(*_args, **_kwargs)
|
|
8
|
+
ensure_puppet_available!
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def debug(msg)
|
|
12
|
+
ensure_puppet_available!
|
|
13
|
+
::Puppet.debug(msg)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def info(msg)
|
|
17
|
+
ensure_puppet_available!
|
|
18
|
+
::Puppet.info(msg)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def warn(msg)
|
|
22
|
+
ensure_puppet_available!
|
|
23
|
+
::Puppet.warning(msg)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def error(msg)
|
|
27
|
+
ensure_puppet_available!
|
|
28
|
+
::Puppet.err(msg)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def fatal(msg)
|
|
32
|
+
ensure_puppet_available!
|
|
33
|
+
::Puppet.crit(msg)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def level; end
|
|
37
|
+
|
|
38
|
+
def level=(_val); end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def ensure_puppet_available!
|
|
43
|
+
return if defined?(::Puppet)
|
|
44
|
+
|
|
45
|
+
raise ComplianceEngine::Error,
|
|
46
|
+
'ComplianceEngine::PuppetLogger requires Puppet to be loaded, but ::Puppet is not defined'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/lib/compliance_engine.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative 'compliance_engine/version'
|
|
4
|
+
require_relative 'compliance_engine/data'
|
|
5
5
|
require 'logger'
|
|
6
6
|
|
|
7
7
|
# Work with compliance data
|
|
@@ -26,7 +26,7 @@ module ComplianceEngine
|
|
|
26
26
|
|
|
27
27
|
# Get the logger
|
|
28
28
|
#
|
|
29
|
-
# @return [Logger]
|
|
29
|
+
# @return [Logger, ComplianceEngine::PuppetLogger]
|
|
30
30
|
def self.log
|
|
31
31
|
return @log unless @log.nil?
|
|
32
32
|
|
|
@@ -36,8 +36,20 @@ module ComplianceEngine
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
# Set the logger
|
|
39
|
-
#
|
|
39
|
+
#
|
|
40
|
+
# @param value [Logger, ComplianceEngine::PuppetLogger] The logger to use
|
|
40
41
|
def self.log=(value)
|
|
41
42
|
@log = value
|
|
42
43
|
end
|
|
44
|
+
|
|
45
|
+
# Install a PuppetLogger unless a logger has already been explicitly configured.
|
|
46
|
+
# Extracted so the behaviour can be unit-tested without reloading enforcement.rb.
|
|
47
|
+
#
|
|
48
|
+
# @return [void]
|
|
49
|
+
def self.install_puppet_logger
|
|
50
|
+
return unless @log.nil?
|
|
51
|
+
|
|
52
|
+
require_relative 'compliance_engine/puppet_logger'
|
|
53
|
+
@log = PuppetLogger.new
|
|
54
|
+
end
|
|
43
55
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: compliance_engine
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steven Pritchard
|
|
@@ -147,6 +147,7 @@ files:
|
|
|
147
147
|
- lib/compliance_engine/module_loader.rb
|
|
148
148
|
- lib/compliance_engine/profile.rb
|
|
149
149
|
- lib/compliance_engine/profiles.rb
|
|
150
|
+
- lib/compliance_engine/puppet_logger.rb
|
|
150
151
|
- lib/compliance_engine/version.rb
|
|
151
152
|
homepage: https://simp-project.com/docs/sce/
|
|
152
153
|
licenses:
|
|
@@ -154,7 +155,7 @@ licenses:
|
|
|
154
155
|
metadata:
|
|
155
156
|
homepage_uri: https://simp-project.com/docs/sce/
|
|
156
157
|
source_code_uri: https://github.com/simp/rubygem-simp-compliance_engine
|
|
157
|
-
changelog_uri: https://github.com/simp/rubygem-simp-compliance_engine/releases/tag/0.
|
|
158
|
+
changelog_uri: https://github.com/simp/rubygem-simp-compliance_engine/releases/tag/0.4.0
|
|
158
159
|
bug_tracker_uri: https://github.com/simp/rubygem-simp-compliance_engine/issues
|
|
159
160
|
rdoc_options: []
|
|
160
161
|
require_paths:
|