Skip to content

Commit c9aea57

Browse files
authored
Merge pull request #322 from netmanagers/debian-family-apt-keyrings
feat(debian): use repository keyring instead of key_id
2 parents 126d2cd + 43b4329 commit c9aea57

File tree

5 files changed

+87
-3
lines changed

5 files changed

+87
-3
lines changed

postgres/codenamemap.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
data_dir: {{ data_dir }}
3030
fromrepo: {{ fromrepo }}
3131
pkg_repo:
32-
name: 'deb http://apt.postgresql.org/pub/repos/apt {{ name }}-pgdg main'
32+
name: 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg] http://apt.postgresql.org/pub/repos/apt {{ name }}-pgdg main'
3333
pkg: postgresql-{{ version }}
3434
pkg_client: postgresql-client-{{ version }}
3535
prepare_cluster:

postgres/osfamilymap.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ Debian:
1616
pkgs_deps: ['python3-apt']
1717
pkg_repo:
1818
humanname: PostgreSQL Official Repository
19-
key_url: 'https://www.postgresql.org/media/keys/ACCC4CF8.asc'
2019
file: /etc/apt/sources.list.d/pgdg.list
20+
pkg_repo_keyring: 'https://download.postgresql.org/pub/repos/apt/pool/main/p/pgdg-keyring/pgdg-keyring_2018.2_all.deb'
2121
pkg_repo_keyid: ACCC4CF8
2222
{% if repo.use_upstream_repo == true %}
2323
pkg_dev: ''
@@ -145,7 +145,7 @@ Suse:
145145
humanname: PostgreSQL {{ repo.version }} $releasever - $basearch
146146
# works for postgres 11 onwards
147147
baseurl: 'https://download.postgresql.org/pub/repos/zypp/{{ repo.version }}/suse/sles-$releasever-$basearch'
148-
key_url: 'https://download.postgresql.org/pub/repos/zypp/{{ repo.version }}/suse/sles-$releasever-$basearch/repodata/repomd.xml.key'
148+
gpgkey: 'https://download.postgresql.org/pub/repos/zypp/{{ repo.version }}/suse/sles-$releasever-$basearch/repodata/repomd.xml.key'
149149
gpgcheck: 1
150150
gpgautoimport: True
151151

postgres/server/remove.sls

+6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ postgresql-repo-removed:
1212
- keyid: {{ postgres.pkg_repo_keyid }}
1313
{%- endif %}
1414
15+
{% if grains.os_family == 'Debian' %}
16+
postgresql-repo-keyring-removed:
17+
pkg.removed:
18+
- name: pgdg-keyring
19+
{%- endif -%}
20+
1521
#remove release installed by formula
1622
postgresql-server-removed:
1723
pkg.removed:

postgres/upstream.sls

+15
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ postgresql-pkg-deps:
2323
- pkgs: {{ postgres.pkgs_deps | json }}
2424
2525
# Add upstream repository for your distro
26+
{% if grains.os_family == 'Debian' %}
27+
postgresql-repo-keyring:
28+
pkg.installed:
29+
- sources:
30+
- pgdg-keyring: {{ postgres.pkg_repo_keyring }}
31+
- require_in:
32+
- pkgrepo: postgresql-repo
33+
{%- endif %}
34+
2635
postgresql-repo:
2736
pkgrepo.managed:
2837
{{- format_kwargs(postgres.pkg_repo) }}
@@ -39,6 +48,12 @@ postgresql-repo:
3948
- keyid: {{ postgres.pkg_repo_keyid }}
4049
{%- endif %}
4150
51+
{% if grains.os_family == 'Debian' %}
52+
postgresql-repo-keyring:
53+
pkg.removed:
54+
- name: pgdg-keyring
55+
{%- endif -%}
56+
4257
{%- endif -%}
4358
4459
{%- elif grains.os not in ('Windows', 'MacOS',) %}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# frozen_string_literal: true
2+
3+
case platform.family
4+
when 'redhat', 'fedora', 'suse'
5+
os_name_repo_file = {
6+
'opensuse' => '/etc/zypp/repos.d/pgdg-sles-13.repo'
7+
}
8+
os_name_repo_file.default = '/etc/yum.repos.d/pgdg13.repo'
9+
10+
os_name_repo_url = {
11+
'amazon' => 'https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-7-$basearch',
12+
'fedora' => 'https://download.postgresql.org/pub/repos/yum/13/fedora/fedora-$releasever-$basearch',
13+
'opensuse' => 'https://download.postgresql.org/pub/repos/zypp/13/suse/sles-$releasever-$basearch'
14+
}
15+
os_name_repo_url.default = 'https://download.postgresql.org/pub/repos/yum/13/redhat/rhel-$releasever-$basearch'
16+
17+
repo_url = os_name_repo_url[platform.name]
18+
repo_file = os_name_repo_file[platform.name]
19+
20+
when 'debian'
21+
# Inspec does not provide a `codename` matcher, so we add ours
22+
finger_codename = {
23+
'ubuntu-18.04' => 'bionic',
24+
'ubuntu-20.04' => 'focal',
25+
'debian-9' => 'stretch',
26+
'debian-10' => 'buster',
27+
'debian-11' => 'bullseye'
28+
}
29+
codename = finger_codename[system.platform[:finger]]
30+
31+
repo_keyring = '/usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg'
32+
repo_file = '/etc/apt/sources.list.d/pgdg.list'
33+
# rubocop:disable Metrics/LineLength
34+
repo_url = "deb [signed-by=#{repo_keyring}] http://apt.postgresql.org/pub/repos/apt #{codename}-pgdg main"
35+
# rubocop:enable Metrics/LineLength
36+
end
37+
38+
control 'Postgresql repository keyring' do
39+
title 'should be installed'
40+
41+
only_if('Requirement for Debian family') do
42+
os.debian?
43+
end
44+
45+
describe package('pgdg-keyring') do
46+
it { should be_installed }
47+
end
48+
49+
describe file(repo_keyring) do
50+
it { should exist }
51+
it { should be_owned_by 'root' }
52+
it { should be_grouped_into 'root' }
53+
its('mode') { should cmp '0644' }
54+
end
55+
end
56+
57+
control 'Postgresql repository' do
58+
impact 1
59+
title 'should be configured'
60+
describe file(repo_file) do
61+
its('content') { should include repo_url }
62+
end
63+
end

0 commit comments

Comments
 (0)