Skip to content

Commit 3624b69

Browse files
committed
Refresh expired gpg key when using keyring (#1253)
1 parent 83db6ca commit 3624b69

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

REFERENCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,7 @@ Default value: `undef`
772772

773773
##### <a name="-apt--keyring--ensure"></a>`ensure`
774774

775-
Data type: `Enum['present','absent']`
775+
Data type: `Enum['present','refreshed','absent']`
776776

777777
Ensure presence or absence of the resource.
778778

manifests/keyring.pp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
Stdlib::Filemode $mode = '0644',
3939
Optional[Stdlib::Filesource] $source = undef,
4040
Optional[String[1]] $content = undef,
41-
Enum['present','absent'] $ensure = 'present',
41+
Enum['present','refreshed','absent'] $ensure = 'present',
4242
) {
4343
ensure_resource('file', $dir, { ensure => 'directory', mode => '0755', })
4444
if $source and $content {
@@ -50,7 +50,7 @@
5050
$file = "${dir}/${filename}"
5151

5252
case $ensure {
53-
'present': {
53+
/^(refreshed|present)$/: {
5454
file { $file:
5555
ensure => 'file',
5656
mode => $mode,
@@ -59,6 +59,15 @@
5959
source => $source,
6060
content => $content,
6161
}
62+
63+
if $ensure == 'refreshed' {
64+
exec {"check_keyring_${name}":
65+
command => "rm ${file}",
66+
onlyif => "test -f ${file} && gpg --show-keys --list-options show-sig-expire ${file} | grep expired",
67+
path => $facts['path'],
68+
notify => File[$file],
69+
}
70+
}
6271
}
6372
'absent': {
6473
file { $file:

spec/defines/keyring_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,21 @@
1717
it { is_expected.to compile }
1818
end
1919
end
20+
21+
describe 'ensure => refreshed' do
22+
let :params do
23+
{
24+
ensure: 'refreshed',
25+
name: 'puppetlabs.gpg',
26+
source: 'http://apt.puppetlabs.com/pubkey.gpg',
27+
}
28+
end
29+
30+
it {
31+
is_expected.to contain_exec('check_keyring_puppetlabs.gpg').with(
32+
command: 'rm /etc/apt/keyrings/puppetlabs.gpg',
33+
onlyif: 'test -f /etc/apt/keyrings/puppetlabs.gpg && gpg --show-keys --list-options show-sig-expire /etc/apt/keyrings/puppetlabs.gpg | grep expired',
34+
)
35+
}
36+
end
2037
end

0 commit comments

Comments
 (0)