inspec 1.12.0 → 1.13.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 +24 -8
- data/lib/inspec/objects/test.rb +1 -1
- data/lib/inspec/resource.rb +1 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/resources/packages.rb +86 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2e2aeebe40a757983d190ca0921c507e1158c33
|
4
|
+
data.tar.gz: 99aad400d64fd3da51392aaa752cbbb2a2647a6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 538a625e9eb9019e46b72095139215548f2f5aa96bb4cfba9e54ac0c4ad64375a4be36f0d15d099b9dde0cb0c8e34f6bc2894dff712adbdffe68d5ffb57c5e7b
|
7
|
+
data.tar.gz: 75fa86184262907ea53bff79ba9c708671970c7825ee33e966b88feb2739c7ed0c38b189a13394edd1e6e2a70060853f3e8e2ced4488f0d888cf011ccce0aa7e
|
data/CHANGELOG.md
CHANGED
@@ -1,32 +1,48 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [1.
|
4
|
-
[Full Changelog](https://github.com/chef/inspec/compare/v1.
|
3
|
+
## [1.13.0](https://github.com/chef/inspec/tree/1.13.0) (2017-02-07)
|
4
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v1.12.0...1.13.0)
|
5
|
+
|
6
|
+
**Implemented enhancements:**
|
7
|
+
|
8
|
+
- add "packages" resource [\#1458](https://github.com/chef/inspec/pull/1458) ([jtimberman](https://github.com/jtimberman))
|
9
|
+
- Provide a way to force it vs its for any argument [\#1457](https://github.com/chef/inspec/pull/1457) ([alexpop](https://github.com/alexpop))
|
5
10
|
|
6
11
|
**Closed issues:**
|
7
12
|
|
8
|
-
-
|
13
|
+
- Ignore me [\#1464](https://github.com/chef/inspec/issues/1464)
|
14
|
+
- redirect URL downloads.inspec.io to https://downloads.chef.io/inspec [\#1462](https://github.com/chef/inspec/issues/1462)
|
9
15
|
|
10
|
-
|
16
|
+
## [v1.12.0](https://github.com/chef/inspec/tree/v1.12.0) (2017-02-03)
|
17
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v1.11.0...v1.12.0)
|
18
|
+
|
19
|
+
**Implemented enhancements:**
|
11
20
|
|
12
21
|
- Allow setting of the tests array [\#1455](https://github.com/chef/inspec/pull/1455) ([alexpop](https://github.com/alexpop))
|
13
22
|
- switch to faraday as http backend [\#1452](https://github.com/chef/inspec/pull/1452) ([chris-rock](https://github.com/chris-rock))
|
14
23
|
- Add FilterTable support to processes resource [\#1451](https://github.com/chef/inspec/pull/1451) ([alexpop](https://github.com/alexpop))
|
15
24
|
|
25
|
+
**Closed issues:**
|
26
|
+
|
27
|
+
- `skip` parameter ignored inside `describe` block [\#1450](https://github.com/chef/inspec/issues/1450)
|
28
|
+
|
16
29
|
## [v1.11.0](https://github.com/chef/inspec/tree/v1.11.0) (2017-02-01)
|
17
30
|
[Full Changelog](https://github.com/chef/inspec/compare/v1.10.0...v1.11.0)
|
18
31
|
|
19
32
|
**Implemented enhancements:**
|
20
33
|
|
21
34
|
- HTTP request resource [\#336](https://github.com/chef/inspec/issues/336)
|
35
|
+
- derive xinetd protocol from socket\_type when not defined in the config file [\#1448](https://github.com/chef/inspec/pull/1448) ([alexpop](https://github.com/alexpop))
|
36
|
+
- Add negate! support for describe.one object [\#1442](https://github.com/chef/inspec/pull/1442) ([alexpop](https://github.com/alexpop))
|
37
|
+
- Version method for kernel\_module [\#1435](https://github.com/chef/inspec/pull/1435) ([postgred](https://github.com/postgred))
|
22
38
|
|
23
|
-
**
|
39
|
+
**Fixed bugs:**
|
24
40
|
|
25
|
-
- derive xinetd protocol from socket\_type when not defined in the config file [\#1448](https://github.com/chef/inspec/pull/1448) ([alexpop](https://github.com/alexpop))
|
26
41
|
- Fix xinetd parsing of services from the same file. Expose resource.protocols [\#1444](https://github.com/chef/inspec/pull/1444) ([alexpop](https://github.com/alexpop))
|
27
|
-
|
42
|
+
|
43
|
+
**Merged pull requests:**
|
44
|
+
|
28
45
|
- Make minor grammar/style changes to `inspec.io` [\#1441](https://github.com/chef/inspec/pull/1441) ([jerryaldrichiii](https://github.com/jerryaldrichiii))
|
29
|
-
- Version method for kernel\_module [\#1435](https://github.com/chef/inspec/pull/1435) ([postgred](https://github.com/postgred))
|
30
46
|
|
31
47
|
## [v1.10.0](https://github.com/chef/inspec/tree/v1.10.0) (2017-01-26)
|
32
48
|
[Full Changelog](https://github.com/chef/inspec/compare/v1.9.0...v1.10.0)
|
data/lib/inspec/objects/test.rb
CHANGED
data/lib/inspec/resource.rb
CHANGED
data/lib/inspec/version.rb
CHANGED
@@ -0,0 +1,86 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# copyright: 2017, Chef Software, Inc. <legal@chef.io>
|
3
|
+
# author: Joshua Timberman
|
4
|
+
# author: Alex Pop
|
5
|
+
# license: All rights reserved
|
6
|
+
|
7
|
+
require 'utils/filter'
|
8
|
+
|
9
|
+
module Inspec::Resources
|
10
|
+
class Packages < Inspec.resource(1)
|
11
|
+
name 'packages'
|
12
|
+
desc 'Use the packages InSpec audit resource to test properties for multiple packages installed on the system'
|
13
|
+
example "
|
14
|
+
describe packages(/xserver-xorg.*/) do
|
15
|
+
its('entries') { should be_empty }
|
16
|
+
end
|
17
|
+
describe packages('vim').entries.length do
|
18
|
+
it { should be > 1 }
|
19
|
+
end
|
20
|
+
describe packages(/vi.+/).where { status != 'installed' } do
|
21
|
+
its('statuses') { should be_empty }
|
22
|
+
end
|
23
|
+
"
|
24
|
+
|
25
|
+
def initialize(pattern)
|
26
|
+
@pattern = pattern_regexp(pattern)
|
27
|
+
all_pkgs = package_list
|
28
|
+
@list = all_pkgs.find_all do |hm|
|
29
|
+
hm[:name] =~ pattern_regexp(pattern)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
"Packages #{@pattern.class == String ? @pattern : @pattern.inspect}"
|
35
|
+
end
|
36
|
+
|
37
|
+
filter = FilterTable.create
|
38
|
+
filter.add_accessor(:where)
|
39
|
+
.add_accessor(:entries)
|
40
|
+
.add(:statuses, field: 'status', style: :simple)
|
41
|
+
.add(:names, field: 'name')
|
42
|
+
.add(:versions, field: 'version')
|
43
|
+
.connect(self, :filtered_packages)
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def pattern_regexp(p)
|
48
|
+
if p.class == String
|
49
|
+
Regexp.new(Regexp.escape(p))
|
50
|
+
elsif p.class == Regexp
|
51
|
+
p
|
52
|
+
else
|
53
|
+
fail 'invalid name argument to packages resource, please use a "string" or /regexp/'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def filtered_packages
|
58
|
+
@list
|
59
|
+
end
|
60
|
+
|
61
|
+
def package_list
|
62
|
+
os = inspec.os
|
63
|
+
|
64
|
+
if os.debian?
|
65
|
+
command = "dpkg-query -W -f='${db:Status-Abbrev} ${Package} ${Version}\\n'"
|
66
|
+
else
|
67
|
+
fail "packages resource is not yet supported on #{os.name}"
|
68
|
+
end
|
69
|
+
build_package_list(command)
|
70
|
+
end
|
71
|
+
|
72
|
+
Package = Struct.new(:status, :name, :version)
|
73
|
+
|
74
|
+
def build_package_list(command)
|
75
|
+
cmd = inspec.command(command)
|
76
|
+
all = cmd.stdout.split("\n")[1..-1]
|
77
|
+
return [] if all.nil?
|
78
|
+
all.map do |m|
|
79
|
+
a = m.split
|
80
|
+
a[0] = 'installed' if a[0] =~ /^.i/
|
81
|
+
a[2] = a[2].split(':').last
|
82
|
+
Package.new(*a)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominik Richter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: train
|
@@ -510,6 +510,7 @@ files:
|
|
510
510
|
- lib/resources/os.rb
|
511
511
|
- lib/resources/os_env.rb
|
512
512
|
- lib/resources/package.rb
|
513
|
+
- lib/resources/packages.rb
|
513
514
|
- lib/resources/parse_config.rb
|
514
515
|
- lib/resources/passwd.rb
|
515
516
|
- lib/resources/pip.rb
|