Skip to content

Commit 928b962

Browse files
Merge pull request #79 from didiermfb/fix/repository_aptkey_signedby
fix(repositories): force aptkey if signed-by and allow aptkey
2 parents 70d13b3 + 3e11c59 commit 928b962

File tree

5 files changed

+56
-0
lines changed

5 files changed

+56
-0
lines changed

apt/map.jinja

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
'preferences': {},
1414
'remove_preferences': false,
1515
'clean_preferences_d': false,
16+
'keyrings_dir': '/etc/apt/keyrings',
17+
'clean_keyrings_d': false,
1618
'remove_apt_conf': false,
1719
'clean_apt_conf_d': false,
1820
'apt_conf_d': {},
@@ -52,6 +54,8 @@
5254
'preferences': {},
5355
'remove_preferences': false,
5456
'clean_preferences_d': false,
57+
'keyrings_dir': '/etc/apt/keyrings',
58+
'clean_keyrings_d': false,
5559
'remove_apt_conf': false,
5660
'clean_apt_conf_d': false,
5761
'apt_conf_d': {},

apt/repositories.sls

+15
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
{% set clean_sources_list_d = apt.get('clean_sources_list_d', apt_map.clean_sources_list_d) %}
55
{% set sources_list_dir = apt.get('sources_list_dir', apt_map.sources_list_dir) %}
66
{% set repositories = apt.get('repositories', apt_map.repositories) %}
7+
{% set keyrings_dir = apt.get('keyrings_dir', apt_map.keyrings_dir) %}
8+
{% set clean_keyrings_d = apt.get('clean_keyrings_d', apt_map.clean_keyrings_d) %}
79
{% set default_url = apt.get('default_url', apt_map.default_url) %}
810
{% set keyring_package = apt.get('keyring_package', apt_map.default_keyring_package) %}
911
@@ -30,6 +32,13 @@
3032
- group: root
3133
- clean: {{ clean_sources_list_d }}
3234
35+
{{ keyrings_dir }}:
36+
file.directory:
37+
- mode: '0755'
38+
- user: root
39+
- group: root
40+
- clean: {{ clean_keyrings_d }}
41+
3342
{% for repo, args in repositories.items() %}
3443
3544
{% set r_opts = '' %}
@@ -69,6 +78,9 @@
6978
the latter will be used. #}
7079
{% if args.key_url is defined %}
7180
- key_url: {{ args.key_url }}
81+
{% if 'signed-by=' in r_opts|lower and args.aptkey is not defined %}
82+
- aptkey: false
83+
{% endif %}
7284
{% elif args.key_text is defined %}
7385
- key_text: {{ args.key_text }}
7486
{% elif args.keyid is defined %}
@@ -78,6 +90,9 @@
7890
- clean_file: true
7991
- refresh: False
8092
- refresh_db: False
93+
{% if args.aptkey is defined %}
94+
- aptkey: {{ args.aptkey }}
95+
{% endif %}
8196
- onchanges_in:
8297
- module: apt.refresh_db
8398

pillar.example

+10
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ apt:
1414
remove_preferences: true
1515
clean_preferences_d: true
1616

17+
keyrings_dir: '/etc/apt/keyrings'
18+
clean_keyrings_d: true
19+
1720
apt_conf_d:
1821
30release:
1922
'APT::Default-Release': stable
@@ -126,6 +129,13 @@ apt:
126129
opts:
127130
trusted: 'yes'
128131
another: whatever
132+
saltstack:
133+
distro: stable
134+
url: https://packages.broadcom.com/artifactory/saltproject-deb
135+
comps: [main]
136+
type: [binary]
137+
key_url: https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public # yamllint disable-line rule:line-length
138+
opts: "signed-by=/etc/apt/keyrings/salt-archive-keyring.pgp"
129139

130140
preferences:
131141
00-rspamd:

test/integration/repositories/controls/repositories_spec.rb

+19
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,23 @@
6464
describe file('/etc/apt/sources.list.d/raspbian-binary.list') do
6565
it { should_not exist }
6666
end
67+
68+
describe file('/etc/apt/sources.list.d/saltstack.list') do
69+
it { should exist }
70+
it { should be_owned_by 'root' }
71+
it { should be_grouped_into 'root' }
72+
its('mode') { should cmp '0644' }
73+
its(:content) do
74+
should match(
75+
%r{deb \[\s?signed-by=/etc/apt/keyrings/salt-archive-keyring.pgp\s?\] https://packages.broadcom.com/artifactory/saltproject-deb stable main}
76+
)
77+
end
78+
end
79+
80+
describe file('/etc/apt/keyrings/salt-archive-keyring.pgp') do
81+
it { should exist }
82+
it { should be_owned_by 'root' }
83+
it { should be_grouped_into 'root' }
84+
its('mode') { should cmp '0644' }
85+
end
6786
end

test/salt/pillar/repositories.sls

+8
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,11 @@ apt:
2727
url: http://archive.raspbian.org/raspbian
2828
type: [source]
2929
key_url: https://archive.raspbian.org/raspbian.public.key
30+
saltstack:
31+
filename: saltstack.list
32+
distro: stable
33+
url: https://packages.broadcom.com/artifactory/saltproject-deb
34+
comps: [main]
35+
type: [binary]
36+
key_url: https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public # yamllint disable-line rule:line-length
37+
opts: "signed-by=/etc/apt/keyrings/salt-archive-keyring.pgp"

0 commit comments

Comments
 (0)