Skip to content

Commit 211776a

Browse files
authored
Merge pull request #57 from Stromweld/patch-1
Add rhel 8+ dnf support
2 parents c4f04b9 + c0a8271 commit 211776a

File tree

6 files changed

+210
-57
lines changed

6 files changed

+210
-57
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
Gemfile.lock
22
inspec.lock
3+
.kitchen

.kitchen.yml

Lines changed: 0 additions & 53 deletions
This file was deleted.

kitchen.dokken.yml

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
---
2+
driver:
3+
name: dokken
4+
privileged: true # because Docker and SystemD/Upstart
5+
6+
transport:
7+
name: dokken
8+
9+
provisioner:
10+
name: chef_infra
11+
deprecations_as_errors: true
12+
chef_license: accept-no-persist
13+
clean_dokken_sandbox: false
14+
15+
verifier:
16+
name: inspec
17+
sudo: true
18+
19+
platforms:
20+
- name: almalinux-8
21+
driver:
22+
image: dokken/almalinux-8
23+
pid_one_command: /usr/lib/systemd/systemd
24+
25+
- name: almalinux-9
26+
driver:
27+
image: dokken/almalinux-9
28+
pid_one_command: /usr/lib/systemd/systemd
29+
30+
- name: amazonlinux-2
31+
driver:
32+
image: dokken/amazonlinux-2
33+
pid_one_command: /usr/lib/systemd/systemd
34+
35+
- name: amazonlinux-2022
36+
driver:
37+
image: dokken/amazonlinux-2022
38+
pid_one_command: /usr/lib/systemd/systemd
39+
40+
- name: centos-7
41+
driver:
42+
image: dokken/centos-7
43+
pid_one_command: /usr/lib/systemd/systemd
44+
45+
- name: centos-8
46+
driver:
47+
image: dokken/centos-8
48+
pid_one_command: /usr/lib/systemd/systemd
49+
50+
- name: rockylinux-8
51+
driver:
52+
image: dokken/rockylinux-8
53+
pid_one_command: /usr/lib/systemd/systemd
54+
55+
- name: rockylinux-9
56+
driver:
57+
image: dokken/rockylinux-9
58+
pid_one_command: /usr/lib/systemd/systemd
59+
60+
- name: debian-10
61+
driver:
62+
image: dokken/debian-10
63+
pid_one_command: /bin/systemd
64+
intermediate_instructions:
65+
- RUN /usr/bin/apt-get update
66+
67+
- name: debian-11
68+
driver:
69+
image: dokken/debian-10
70+
pid_one_command: /bin/systemd
71+
intermediate_instructions:
72+
- RUN /usr/bin/apt-get update
73+
74+
- name: ubuntu-20.04
75+
driver:
76+
image: dokken/ubuntu-20.04
77+
pid_one_command: /bin/systemd
78+
intermediate_instructions:
79+
- RUN /usr/bin/apt-get update
80+
81+
- name: ubuntu-22.04
82+
driver:
83+
image: dokken/ubuntu-22.04
84+
pid_one_command: /bin/systemd
85+
intermediate_instructions:
86+
- RUN /usr/bin/apt-get update
87+
88+
suites:
89+
- name: default
90+
verifier:
91+
inspec_tests:
92+
- path: .

kitchen.vagrant.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
driver:
3+
name: vagrant
4+
box_auto_update: true
5+
box_auto_prune: true
6+
7+
provisioner:
8+
name: chef_infra
9+
retry_on_exit_code:
10+
- 35 # 35 is the exit code signaling that the node is rebooting
11+
product_name: chef
12+
always_update_cookbooks: true
13+
deprecations_as_errors: true
14+
chef_license: accept-no-persist
15+
16+
verifier:
17+
name: inspec
18+
19+
platforms:
20+
- name: almalinux-8
21+
- name: almalinux-9
22+
- name: amazonlinux-2
23+
# - name: amazonlinux-2022
24+
- name: centos-7
25+
- name: centos-8
26+
- name: rockylinux-8
27+
- name: rockylinux-9
28+
- name: debian-10
29+
- name: debian-11
30+
- name: ubuntu-20.04
31+
- name: ubuntu-22.04
32+
33+
34+
suites:
35+
- name: default
36+
verifier:
37+
inspec_tests:
38+
- path: .

kitchen.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
driver:
3+
name: docker
4+
use_sudo: false
5+
6+
provisioner:
7+
name: chef_infra
8+
9+
verifier:
10+
name: inspec
11+
sudo: true
12+
13+
platforms:
14+
- name: ubuntu-16.04
15+
driver:
16+
image: ubuntu:16.04
17+
- name: ubuntu-18.04
18+
driver:
19+
image: ubuntu:18.04
20+
- name: ubuntu-20.04
21+
driver:
22+
image: ubuntu:20.04
23+
- name: ubuntu-22.04
24+
driver:
25+
image: ubuntu:22.04
26+
- name: centos-6
27+
driver:
28+
image: centos:6
29+
- name: centos-7
30+
driver:
31+
image: centos:7
32+
- name: centos-8
33+
driver:
34+
image: centos:8
35+
- name: almalinux-8
36+
driver:
37+
image: almalinux:8
38+
privileged: true
39+
- name: almalinux-9
40+
driver:
41+
image: almalinux:9
42+
privileged: true
43+
- name: rockylinux-8
44+
driver:
45+
image: rockylinux:8
46+
privileged: true
47+
- name: rockylinux-9
48+
driver:
49+
image: rockylinux:9
50+
privileged: true
51+
- name: debian-8
52+
driver:
53+
image: debian:8
54+
- name: debian-9
55+
driver:
56+
image: debian:9
57+
- name: debian-10
58+
driver:
59+
image: debian:10
60+
- name: debian-11
61+
driver:
62+
image: debian:11
63+
64+
suites:
65+
- name: default
66+
verifier:
67+
inspec_tests:
68+
- path: .

libraries/linux_updates.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,17 @@ def packages
208208
end
209209

210210
def updates
211-
rhel_updates = <<~PRINT_JSON
212-
#!/bin/sh
213-
python -c 'import sys; sys.path.insert(0, "/usr/share/yum-cli"); import cli; ybc = cli.YumBaseCli(); ybc.setCacheDir("/tmp"); list = ybc.returnPkgLists(["updates"]);res = ["{\\"name\\":\\""+x.name+"\\", \\"version\\":\\""+x.version+"-"+x.release+"\\",\\"arch\\":\\""+x.arch+"\\",\\"repository\\":\\""+x.repo.id+"\\"}" for x in list.updates]; print "{\\"available\\":["+",".join(res)+"]}"'
214-
PRINT_JSON
211+
rhel_updates = if @inspec.os.release.to_i > 7
212+
<<~PRINT_JSON
213+
#!/usr/bin/sh
214+
/usr/libexec/platform-python -c 'import dnf; base = dnf.Base(); conf = base.conf; conf.substitutions.update_from_etc(conf.installroot); conf.substitutions._update_from_env(); base.read_all_repos(); base.fill_sack(); q = base.sack.query(); list = list(q.upgrades()); res = ["{\\"name\\":\\""+x.name+"\\",\\"version\\":\\""+x.version+"-"+x.release+"\\",\\"arch\\":\\""+x.arch+"\\",\\"repository\\":\\""+x.reponame+"\\"}" for x in list]; print("{\\"available\\":["+",".join(res)+"]}")'
215+
PRINT_JSON
216+
else
217+
<<~PRINT_JSON
218+
#!/bin/sh
219+
python -c 'import sys; sys.path.insert(0, "/usr/share/yum-cli"); import cli; ybc = cli.YumBaseCli(); ybc.setCacheDir("/tmp"); list = ybc.returnPkgLists(["updates"]);res = ["{\\"name\\":\\""+x.name+"\\",\\"version\\":\\""+x.version+"-"+x.release+"\\",\\"arch\\":\\""+x.arch+"\\",\\"repository\\":\\""+x.repo.id+"\\"}" for x in list.updates]; print "{\\"available\\":["+",".join(res)+"]}"'
220+
PRINT_JSON
221+
end
215222
cmd = @inspec.bash(rhel_updates)
216223
unless cmd.exit_status.zero?
217224
# essentially we want https://github.com/chef/inspec/issues/1205

0 commit comments

Comments
 (0)