inspec 1.45.9 → 1.45.13
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/.rubocop.yml +54 -32
- data/CHANGELOG.md +29 -21
- data/Gemfile +1 -1
- data/docs/resources/ini.md.erb +14 -1
- data/docs/shell.md +1 -1
- data/inspec.gemspec +2 -2
- data/lib/bundles/inspec-artifact/cli.rb +3 -8
- data/lib/bundles/inspec-compliance/configuration.rb +5 -5
- data/lib/bundles/inspec-compliance/http.rb +2 -5
- data/lib/bundles/inspec-compliance/target.rb +6 -6
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +1 -1
- data/lib/bundles/inspec-habitat/profile.rb +68 -74
- data/lib/bundles/inspec-supermarket/api.rb +7 -7
- data/lib/bundles/inspec-supermarket/cli.rb +1 -1
- data/lib/fetchers/git.rb +3 -8
- data/lib/fetchers/local.rb +7 -13
- data/lib/fetchers/url.rb +1 -1
- data/lib/inspec/backend.rb +0 -1
- data/lib/inspec/base_cli.rb +1 -1
- data/lib/inspec/cached_fetcher.rb +11 -12
- data/lib/inspec/cli.rb +0 -1
- data/lib/inspec/control_eval_context.rb +2 -2
- data/lib/inspec/dependencies/lockfile.rb +13 -15
- data/lib/inspec/dependencies/requirement.rb +1 -1
- data/lib/inspec/dependencies/resolver.rb +3 -5
- data/lib/inspec/dsl.rb +5 -5
- data/lib/inspec/dsl_shared.rb +1 -1
- data/lib/inspec/env_printer.rb +26 -26
- data/lib/inspec/metadata.rb +11 -10
- data/lib/inspec/objects/or_test.rb +4 -2
- data/lib/inspec/objects/test.rb +1 -1
- data/lib/inspec/profile.rb +2 -2
- data/lib/inspec/resource.rb +1 -3
- data/lib/inspec/rspec_json_formatter.rb +6 -8
- data/lib/inspec/shell.rb +51 -52
- data/lib/inspec/version.rb +1 -1
- data/lib/matchers/matchers.rb +1 -2
- data/lib/resources/audit_policy.rb +2 -2
- data/lib/resources/auditd.rb +6 -3
- data/lib/resources/dh_params.rb +1 -2
- data/lib/resources/docker.rb +2 -2
- data/lib/resources/docker_container.rb +4 -4
- data/lib/resources/elasticsearch.rb +2 -6
- data/lib/resources/etc_group.rb +2 -4
- data/lib/resources/groups.rb +14 -14
- data/lib/resources/host.rb +2 -3
- data/lib/resources/packages.rb +1 -1
- data/lib/resources/port.rb +1 -1
- data/lib/resources/postgres.rb +6 -6
- data/lib/resources/powershell.rb +1 -1
- data/lib/resources/service.rb +4 -5
- data/lib/resources/users.rb +58 -58
- data/lib/resources/vbscript.rb +10 -10
- data/lib/resources/virtualization.rb +3 -4
- data/lib/resources/x509_certificate.rb +1 -1
- data/lib/resources/yum.rb +1 -1
- data/lib/source_readers/inspec.rb +2 -1
- data/lib/utils/command_wrapper.rb +3 -8
- data/lib/utils/filter.rb +1 -1
- data/lib/utils/json_log.rb +2 -1
- data/lib/utils/latest_version.rb +5 -4
- data/lib/utils/object_traversal.rb +1 -1
- data/lib/utils/parser.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 942384b7fafcd0d8318201eec37d4a08556d3080
|
4
|
+
data.tar.gz: 8823e1de51315eec835891df623ea55f6dca3059
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fa3b0ea4482dc3f5562610a64fb6b878e97c6ad6b614564f7f6a2742d66ead3620c770ec379347373ed5e0182557d4c80100d219cef7d77c70ff87cdaaa89e6
|
7
|
+
data.tar.gz: 0c82db93fca88e51f51d936aaa792e124ba3826033963918e0bb8faca4b3a18bcaad3f64d3773db8ecfc62df22962e8c58ffa6055aad875e8563888c6a74322e
|
data/.rubocop.yml
CHANGED
@@ -8,30 +8,72 @@ AllCops:
|
|
8
8
|
- 'examples/**/*'
|
9
9
|
- 'vendor/**/*'
|
10
10
|
- 'lib/bundles/inspec-init/templates/**/*'
|
11
|
-
|
12
|
-
Enabled: false
|
11
|
+
- 'www/tutorial/**/*'
|
13
12
|
AlignParameters:
|
14
13
|
Enabled: true
|
15
|
-
|
16
|
-
Enabled:
|
14
|
+
BlockDelimiters:
|
15
|
+
Enabled: false
|
16
|
+
Documentation:
|
17
|
+
Enabled: false
|
18
|
+
EmptyLinesAroundBlockBody:
|
19
|
+
Enabled: false
|
17
20
|
FrozenStringLiteralComment:
|
18
21
|
Enabled: false
|
19
22
|
HashSyntax:
|
20
23
|
Enabled: true
|
21
24
|
LineLength:
|
22
25
|
Enabled: false
|
23
|
-
|
26
|
+
Layout/AlignHash:
|
27
|
+
Enabled: false
|
28
|
+
Layout/EmptyLineAfterMagicComment:
|
29
|
+
Enabled: false
|
30
|
+
Layout/EndOfLine:
|
31
|
+
Enabled: true
|
32
|
+
EnforcedStyle: lf
|
33
|
+
Layout/SpaceAroundOperators:
|
24
34
|
Enabled: false
|
25
35
|
MethodLength:
|
26
36
|
Max: 40
|
27
|
-
|
28
|
-
|
37
|
+
Metrics/AbcSize:
|
38
|
+
Max: 33
|
39
|
+
Metrics/BlockLength:
|
40
|
+
Max: 50
|
29
41
|
Metrics/CyclomaticComplexity:
|
30
42
|
Max: 10
|
31
43
|
Metrics/PerceivedComplexity:
|
32
44
|
Max: 11
|
33
|
-
|
34
|
-
|
45
|
+
NumericLiterals:
|
46
|
+
MinDigits: 10
|
47
|
+
Security/YAMLLoad:
|
48
|
+
Enabled: false
|
49
|
+
Style/AndOr:
|
50
|
+
Enabled: false
|
51
|
+
Style/BracesAroundHashParameters:
|
52
|
+
Enabled: false
|
53
|
+
Style/ClassAndModuleChildren:
|
54
|
+
Enabled: false
|
55
|
+
Style/ConditionalAssignment:
|
56
|
+
Enabled: false
|
57
|
+
Style/EmptyMethod:
|
58
|
+
Enabled: false
|
59
|
+
Style/Encoding:
|
60
|
+
Enabled: false
|
61
|
+
Style/FileName:
|
62
|
+
Enabled: false
|
63
|
+
Style/IfUnlessModifier:
|
64
|
+
Enabled: false
|
65
|
+
Style/MethodMissing:
|
66
|
+
Enabled: false
|
67
|
+
Style/MultilineIfModifier:
|
68
|
+
Enabled: false
|
69
|
+
Style/NegatedIf:
|
70
|
+
Enabled: false
|
71
|
+
Style/Not:
|
72
|
+
Enabled: false
|
73
|
+
Style/NumericLiteralPrefix:
|
74
|
+
Enabled: false
|
75
|
+
Style/NumericPredicate:
|
76
|
+
Enabled: false
|
35
77
|
Style/PercentLiteralDelimiters:
|
36
78
|
PreferredDelimiters:
|
37
79
|
'%': '{}'
|
@@ -43,33 +85,13 @@ Style/PercentLiteralDelimiters:
|
|
43
85
|
'%w': '{}'
|
44
86
|
'%W': ()
|
45
87
|
'%x': ()
|
46
|
-
Style/AlignHash:
|
47
|
-
Enabled: false
|
48
88
|
Style/PredicateName:
|
49
89
|
Enabled: false
|
50
|
-
Style/
|
51
|
-
Enabled: false
|
52
|
-
Style/ConditionalAssignment:
|
53
|
-
Enabled: false
|
54
|
-
Style/BracesAroundHashParameters:
|
90
|
+
Style/SymbolArray:
|
55
91
|
Enabled: false
|
56
|
-
Style/AndOr:
|
57
|
-
Enabled: false
|
58
|
-
Style/Not:
|
59
|
-
Enabled: false
|
60
|
-
Style/FileName:
|
61
|
-
Enabled: false
|
62
|
-
Style/TrailingCommaInLiteral:
|
63
|
-
EnforcedStyleForMultiline: comma
|
64
92
|
Style/TrailingCommaInArguments:
|
65
93
|
EnforcedStyleForMultiline: comma
|
66
|
-
Style/
|
67
|
-
|
94
|
+
Style/TrailingCommaInLiteral:
|
95
|
+
EnforcedStyleForMultiline: comma
|
68
96
|
Style/UnlessElse:
|
69
97
|
Enabled: false
|
70
|
-
BlockDelimiters:
|
71
|
-
Enabled: false
|
72
|
-
Style/SpaceAroundOperators:
|
73
|
-
Enabled: false
|
74
|
-
Style/IfUnlessModifier:
|
75
|
-
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,34 +1,43 @@
|
|
1
1
|
# Change Log
|
2
2
|
<!-- usage documentation: http://expeditor-docs.es.chef.io/configuration/changelog/ -->
|
3
|
-
<!-- latest_release 1.45.
|
4
|
-
## [v1.45.
|
3
|
+
<!-- latest_release 1.45.13 -->
|
4
|
+
## [v1.45.13](https://github.com/chef/inspec/tree/v1.45.13) (2017-11-21)
|
5
5
|
|
6
|
-
####
|
7
|
-
-
|
6
|
+
#### Merged Pull Requests
|
7
|
+
- Bump train to 0.29.2 [#2327](https://github.com/chef/inspec/pull/2327) ([adamleff](https://github.com/adamleff))
|
8
8
|
<!-- latest_release -->
|
9
9
|
|
10
|
-
<!-- release_rollup since=1.
|
11
|
-
### Changes since 1.
|
12
|
-
|
13
|
-
#### Enhancements
|
14
|
-
- http resource: Add basic param handling to remote HTTP worker [#2286](https://github.com/chef/inspec/pull/2286) ([schisamo](https://github.com/schisamo)) <!-- 1.45.9 -->
|
15
|
-
- Correctly format skip exceptions in formatters [#2307](https://github.com/chef/inspec/pull/2307) ([adamleff](https://github.com/adamleff)) <!-- 1.45.4 -->
|
10
|
+
<!-- release_rollup since=1.45.9 -->
|
11
|
+
### Changes since 1.45.9 release
|
16
12
|
|
17
13
|
#### Merged Pull Requests
|
18
|
-
-
|
19
|
-
-
|
20
|
-
-
|
21
|
-
-
|
22
|
-
|
14
|
+
- Bump train to 0.29.2 [#2327](https://github.com/chef/inspec/pull/2327) ([adamleff](https://github.com/adamleff)) <!-- 1.45.13 -->
|
15
|
+
- Bump Rubocop to 0.49.1 [#2323](https://github.com/chef/inspec/pull/2323) ([adamleff](https://github.com/adamleff)) <!-- 1.45.12 -->
|
16
|
+
- Remove bundler install during Appveyor tests [#2322](https://github.com/chef/inspec/pull/2322) ([adamleff](https://github.com/adamleff)) <!-- 1.45.11 -->
|
17
|
+
- Remove debug message from unit test [#2313](https://github.com/chef/inspec/pull/2313) ([eramoto](https://github.com/eramoto)) <!-- 1.45.10 -->
|
18
|
+
<!-- release_rollup -->
|
19
|
+
|
20
|
+
<!-- latest_stable_release -->
|
21
|
+
## [v1.45.9](https://github.com/chef/inspec/tree/v1.45.9) (2017-11-16)
|
22
|
+
|
23
|
+
#### Enhancements
|
24
|
+
- Correctly format skip exceptions in formatters [#2307](https://github.com/chef/inspec/pull/2307) ([adamleff](https://github.com/adamleff))
|
25
|
+
- http resource: Add basic param handling to remote HTTP worker [#2286](https://github.com/chef/inspec/pull/2286) ([schisamo](https://github.com/schisamo))
|
23
26
|
|
24
27
|
#### Bug Fixes
|
25
|
-
-
|
26
|
-
-
|
27
|
-
-
|
28
|
-
-
|
29
|
-
<!-- release_rollup -->
|
28
|
+
- port resource: handle ss output from older iproute package [#2305](https://github.com/chef/inspec/pull/2305) ([Wing924](https://github.com/Wing924))
|
29
|
+
- Fix classname in JUnit formatter [#2283](https://github.com/chef/inspec/pull/2283) ([adamleff](https://github.com/adamleff))
|
30
|
+
- oracledb_session resource: fix credential passing to sql/sqlplus [#2308](https://github.com/chef/inspec/pull/2308) ([bratdim](https://github.com/bratdim))
|
31
|
+
- xinetd_conf resource: fix false positives when config file or directory doesn't exist [#2302](https://github.com/chef/inspec/pull/2302) ([eramoto](https://github.com/eramoto))
|
30
32
|
|
33
|
+
#### Merged Pull Requests
|
34
|
+
- Bumping train to 0.29.1 [#2306](https://github.com/chef/inspec/pull/2306) ([adamleff](https://github.com/adamleff))
|
35
|
+
- Habitat build works for all versions, eliminates rake [#2301](https://github.com/chef/inspec/pull/2301) ([adamleff](https://github.com/adamleff))
|
36
|
+
- Fix gid filtering for etc_group resource [#2297](https://github.com/chef/inspec/pull/2297) ([eramoto](https://github.com/eramoto))
|
37
|
+
- Require Ruby 2.3 and later [#2293](https://github.com/chef/inspec/pull/2293) ([adamleff](https://github.com/adamleff))
|
38
|
+
- Update Rubocop to TargetRubyVersion 2.3 [#2311](https://github.com/chef/inspec/pull/2311) ([adamleff](https://github.com/adamleff))
|
31
39
|
<!-- latest_stable_release -->
|
40
|
+
|
32
41
|
## [v1.44.8](https://github.com/chef/inspec/tree/v1.44.8) (2017-11-09)
|
33
42
|
|
34
43
|
#### Enhancements
|
@@ -47,7 +56,6 @@
|
|
47
56
|
- Switch to tomlrb for TOML parsing [#2295](https://github.com/chef/inspec/pull/2295) ([adamleff](https://github.com/adamleff))
|
48
57
|
- Use Ruby 2.4.2 in the Omnibus InSpec packages [#2294](https://github.com/chef/inspec/pull/2294) ([adamleff](https://github.com/adamleff))
|
49
58
|
- Eliminate deprecation warnings on resource skipped messages [#2296](https://github.com/chef/inspec/pull/2296) ([adamleff](https://github.com/adamleff))
|
50
|
-
<!-- latest_stable_release -->
|
51
59
|
|
52
60
|
## [v1.43.8](https://github.com/chef/inspec/tree/v1.43.8) (2017-11-02)
|
53
61
|
|
data/Gemfile
CHANGED
data/docs/resources/ini.md.erb
CHANGED
@@ -18,7 +18,7 @@ An `ini` resource block declares the configuration settings to be tested:
|
|
18
18
|
|
19
19
|
where
|
20
20
|
|
21
|
-
* `'setting_name'` is a
|
21
|
+
* `'setting_name'` is a setting key defined in the INI file
|
22
22
|
* `('path')` is the path to the INI file
|
23
23
|
* `{ should eq 'value' }` is the value that is expected
|
24
24
|
|
@@ -29,6 +29,19 @@ For example:
|
|
29
29
|
its('server') { should eq '192.0.2.62' }
|
30
30
|
end
|
31
31
|
|
32
|
+
Settings inside of sections, such as the following:
|
33
|
+
|
34
|
+
[section_name]
|
35
|
+
setting_name = 123
|
36
|
+
|
37
|
+
... can be retrieved by prefixing the setting_name with the section.
|
38
|
+
|
39
|
+
its('section_name.setting_name') { should cmp 123 }
|
40
|
+
|
41
|
+
In the event a section or setting name has a period in it, the alternate syntax can be used:
|
42
|
+
|
43
|
+
its(['section.with.a.dot.in.it', 'setting.name.with.dots']) { should cmp 'lotsadots' }
|
44
|
+
|
32
45
|
<br>
|
33
46
|
|
34
47
|
## Examples
|
data/docs/shell.md
CHANGED
@@ -29,7 +29,7 @@ InSpec), you can use the `-t` flag. We support connecting using ssh,
|
|
29
29
|
WinRm and docker. If no target is provided, we implicitly support the
|
30
30
|
"local" target - i.e. tests running on the current machine running
|
31
31
|
InSpec. For an ssh connection, use `-i` for specifying ssh key files,
|
32
|
-
and the `--sudo*` commands for requesting a
|
32
|
+
and the `--sudo*` commands for requesting a privilege escalation after
|
33
33
|
logging in. For a WinRM connection, use `--path` to change the login
|
34
34
|
path, `--ssl` to use SSL for transport layer encryption.
|
35
35
|
|
data/inspec.gemspec
CHANGED
@@ -20,13 +20,13 @@ Gem::Specification.new do |spec|
|
|
20
20
|
'{bin,docs,examples,lib}/**/*', File::FNM_DOTMATCH
|
21
21
|
).reject { |f| File.directory?(f) }
|
22
22
|
|
23
|
-
spec.executables = %w{
|
23
|
+
spec.executables = %w{inspec}
|
24
24
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
25
25
|
spec.require_paths = ['lib']
|
26
26
|
|
27
27
|
spec.required_ruby_version = '>= 2.3'
|
28
28
|
|
29
|
-
spec.add_dependency 'train', '~> 0.29', '>= 0.29.
|
29
|
+
spec.add_dependency 'train', '~> 0.29', '>= 0.29.2'
|
30
30
|
spec.add_dependency 'thor', '~> 0.19'
|
31
31
|
spec.add_dependency 'json', '>= 1.8', '< 3.0'
|
32
32
|
spec.add_dependency 'rainbow', '~> 2'
|
@@ -211,17 +211,12 @@ module Artifact
|
|
211
211
|
def valid_header?(file_alg, file_version, file_keyname)
|
212
212
|
public_keyfile = "#{file_keyname}.pem.pub"
|
213
213
|
puts "Looking for #{public_keyfile} to verify artifact"
|
214
|
-
if
|
214
|
+
if !File.exist? public_keyfile
|
215
215
|
raise "Can't find #{public_keyfile}"
|
216
216
|
end
|
217
217
|
|
218
|
-
if
|
219
|
-
|
220
|
-
end
|
221
|
-
|
222
|
-
if not VALID_PROFILE_VERSIONS.member? file_version
|
223
|
-
raise 'Invalid artifact version detected'
|
224
|
-
end
|
218
|
+
raise 'Invalid artifact digest algorithm detected' if !VALID_PROFILE_DIGESTS.member?(file_alg)
|
219
|
+
raise 'Invalid artifact version detected' if !VALID_PROFILE_VERSIONS.member?(file_version)
|
225
220
|
end
|
226
221
|
|
227
222
|
def verify(file_to_verifiy, &content_block)
|
@@ -79,11 +79,11 @@ module Compliance
|
|
79
79
|
|
80
80
|
# exit 1 if the version of compliance that we're working with doesn't support odic
|
81
81
|
def legacy_check!(feature)
|
82
|
-
if
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
82
|
+
return if supported?(feature)
|
83
|
+
|
84
|
+
puts "This feature (#{feature}) is not available for legacy installations."
|
85
|
+
puts 'Please upgrade to a recent version of Chef Compliance.'
|
86
|
+
exit 1
|
87
87
|
end
|
88
88
|
|
89
89
|
private
|
@@ -12,10 +12,8 @@ module Compliance
|
|
12
12
|
def self.get(url, headers = nil, insecure)
|
13
13
|
uri = _parse_url(url)
|
14
14
|
req = Net::HTTP::Get.new(uri.path)
|
15
|
-
|
16
|
-
|
17
|
-
req.add_field(key, value)
|
18
|
-
end
|
15
|
+
headers&.each do |key, value|
|
16
|
+
req.add_field(key, value)
|
19
17
|
end
|
20
18
|
send_request(uri, req, insecure)
|
21
19
|
end
|
@@ -72,7 +70,6 @@ module Compliance
|
|
72
70
|
http.request(req)
|
73
71
|
}
|
74
72
|
res
|
75
|
-
|
76
73
|
rescue OpenSSL::SSL::SSLError => e
|
77
74
|
raise e unless e.message.include? 'certificate verify failed'
|
78
75
|
|
@@ -37,15 +37,15 @@ module Compliance
|
|
37
37
|
server = 'compliance'
|
38
38
|
msg = "inspec compliance login https://your_compliance_server --user admin --insecure --token 'PASTE TOKEN HERE' "
|
39
39
|
end
|
40
|
-
raise Inspec::FetcherFailure,
|
40
|
+
raise Inspec::FetcherFailure, <<~EOF
|
41
41
|
|
42
|
-
Cannot fetch #{uri} because your #{server} token has not been
|
43
|
-
configured.
|
42
|
+
Cannot fetch #{uri} because your #{server} token has not been
|
43
|
+
configured.
|
44
44
|
|
45
|
-
Please login using
|
45
|
+
Please login using
|
46
46
|
|
47
|
-
|
48
|
-
EOF
|
47
|
+
#{msg}
|
48
|
+
EOF
|
49
49
|
end
|
50
50
|
|
51
51
|
# verifies that the target e.g base/ssh exists
|
@@ -13,7 +13,7 @@ puts "Run test as #{user} in path #{pwd}"
|
|
13
13
|
access_token = ENV['COMPLIANCE_ACCESSTOKEN']
|
14
14
|
refresh_token = ENV['COMPLIANCE_REFRESHTOKEN']
|
15
15
|
|
16
|
-
%w{refresh_token access_token}.each do |type|
|
16
|
+
%w{refresh_token access_token}.each do |type| # rubocop:disable Metrics/BlockLength
|
17
17
|
case type
|
18
18
|
when 'access_token'
|
19
19
|
token_options = "--token '#{access_token}'"
|
@@ -136,27 +136,21 @@ module Habitat
|
|
136
136
|
Habitat::Log.info('Checking to see if Habitat is installed...')
|
137
137
|
cmd = Mixlib::ShellOut.new('hab --version')
|
138
138
|
cmd.run_command
|
139
|
-
if cmd.error?
|
140
|
-
exit_with_error('Unable to run Habitat commands.', cmd.stderr)
|
141
|
-
end
|
139
|
+
exit_with_error('Unable to run Habitat commands.', cmd.stderr) if cmd.error?
|
142
140
|
end
|
143
141
|
|
144
142
|
def validate_habitat_origin
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
)
|
150
|
-
end
|
143
|
+
exit_with_error(
|
144
|
+
'Unable to determine Habitat origin name.',
|
145
|
+
'Run `hab setup` or set the HAB_ORIGIN environment variable.',
|
146
|
+
) if habitat_origin.nil?
|
151
147
|
end
|
152
148
|
|
153
149
|
def validate_habitat_auth_token
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
)
|
159
|
-
end
|
150
|
+
exit_with_error(
|
151
|
+
'Unable to determine Habitat auth token for publishing.',
|
152
|
+
'Run `hab setup` or set the HAB_AUTH_TOKEN environment variable.',
|
153
|
+
) if habitat_auth_token.nil?
|
160
154
|
end
|
161
155
|
|
162
156
|
def validate_output_dir
|
@@ -318,78 +312,78 @@ module Habitat
|
|
318
312
|
end
|
319
313
|
|
320
314
|
def plan_contents
|
321
|
-
plan =
|
322
|
-
pkg_name=#{package_name}
|
323
|
-
pkg_version=#{profile.version}
|
324
|
-
pkg_origin=#{habitat_origin}
|
325
|
-
pkg_deps=(chef/inspec core/ruby core/hab)
|
326
|
-
pkg_svc_user=root
|
327
|
-
EOL
|
315
|
+
plan = <<~EOL
|
316
|
+
pkg_name=#{package_name}
|
317
|
+
pkg_version=#{profile.version}
|
318
|
+
pkg_origin=#{habitat_origin}
|
319
|
+
pkg_deps=(chef/inspec core/ruby core/hab)
|
320
|
+
pkg_svc_user=root
|
321
|
+
EOL
|
328
322
|
|
329
323
|
plan += "pkg_license='#{profile.metadata.params[:license]}'\n\n" if profile.metadata.params[:license]
|
330
324
|
|
331
|
-
plan +=
|
325
|
+
plan += <<~EOL
|
332
326
|
|
333
|
-
do_build() {
|
334
|
-
|
335
|
-
}
|
327
|
+
do_build() {
|
328
|
+
cp -vr $PLAN_CONTEXT/../* $HAB_CACHE_SRC_PATH/$pkg_dirname
|
329
|
+
}
|
336
330
|
|
337
|
-
do_install() {
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
331
|
+
do_install() {
|
332
|
+
local profile_contents
|
333
|
+
local excludes
|
334
|
+
profile_contents=($(ls))
|
335
|
+
excludes=(habitat results *.hart)
|
342
336
|
|
343
|
-
|
344
|
-
|
345
|
-
|
337
|
+
for item in ${excludes[@]}; do
|
338
|
+
profile_contents=(${profile_contents[@]/$item/})
|
339
|
+
done
|
346
340
|
|
347
|
-
|
348
|
-
|
349
|
-
}
|
341
|
+
mkdir ${pkg_prefix}/dist
|
342
|
+
cp -r ${profile_contents[@]} ${pkg_prefix}/dist/
|
343
|
+
}
|
350
344
|
EOL
|
351
345
|
|
352
346
|
plan
|
353
347
|
end
|
354
348
|
|
355
349
|
def run_hook_contents
|
356
|
-
|
357
|
-
#!/bin/sh
|
358
|
-
|
359
|
-
# redirect stderr to stdout
|
360
|
-
# ultimately, we'd like to log this somewhere useful, but due to
|
361
|
-
# https://github.com/habitat-sh/habitat/issues/2395, we need to
|
362
|
-
# avoid doing that for now.
|
363
|
-
exec 2>&1
|
364
|
-
|
365
|
-
# InSpec will try to create a .cache directory in the user's home directory
|
366
|
-
# so this needs to be someplace writeable by the hab user
|
367
|
-
export HOME={{pkg.svc_var_path}}
|
368
|
-
|
369
|
-
PROFILE_IDENT="{{pkg.origin}}/{{pkg.name}}"
|
370
|
-
RESULTS_DIR="{{pkg.svc_var_path}}/inspec_results"
|
371
|
-
RESULTS_FILE="${RESULTS_DIR}/{{pkg.name}}.json"
|
372
|
-
|
373
|
-
# Create a directory for inspec formatter output
|
374
|
-
mkdir -p {{pkg.svc_var_path}}/inspec_results
|
375
|
-
|
376
|
-
while true; do
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
done
|
350
|
+
<<~EOL
|
351
|
+
#!/bin/sh
|
352
|
+
|
353
|
+
# redirect stderr to stdout
|
354
|
+
# ultimately, we'd like to log this somewhere useful, but due to
|
355
|
+
# https://github.com/habitat-sh/habitat/issues/2395, we need to
|
356
|
+
# avoid doing that for now.
|
357
|
+
exec 2>&1
|
358
|
+
|
359
|
+
# InSpec will try to create a .cache directory in the user's home directory
|
360
|
+
# so this needs to be someplace writeable by the hab user
|
361
|
+
export HOME={{pkg.svc_var_path}}
|
362
|
+
|
363
|
+
PROFILE_IDENT="{{pkg.origin}}/{{pkg.name}}"
|
364
|
+
RESULTS_DIR="{{pkg.svc_var_path}}/inspec_results"
|
365
|
+
RESULTS_FILE="${RESULTS_DIR}/{{pkg.name}}.json"
|
366
|
+
|
367
|
+
# Create a directory for inspec formatter output
|
368
|
+
mkdir -p {{pkg.svc_var_path}}/inspec_results
|
369
|
+
|
370
|
+
while true; do
|
371
|
+
echo "Executing InSpec for ${PROFILE_IDENT}"
|
372
|
+
inspec exec {{pkg.path}}/dist --format=json > ${RESULTS_FILE}
|
373
|
+
|
374
|
+
if [ $? -eq 0 ]; then
|
375
|
+
echo "InSpec run completed successfully."
|
376
|
+
else
|
377
|
+
echo "InSpec run did not complete successfully. If you do not see any errors above,"
|
378
|
+
echo "control failures were detected. Check the InSpec results here for details:"
|
379
|
+
echo ${RESULTS_FILE}
|
380
|
+
echo "Otherwise, troubleshoot any errors shown above."
|
381
|
+
fi
|
382
|
+
|
383
|
+
source {{pkg.svc_config_path}}/settings.sh
|
384
|
+
echo "sleeping for ${SLEEP_TIME} seconds"
|
385
|
+
sleep ${SLEEP_TIME}
|
386
|
+
done
|
393
387
|
EOL
|
394
388
|
end
|
395
389
|
end
|