Skip to content

Commit f9be175

Browse files
authored
Merge pull request #1147 from kenyon/source-keyring-usage
Allow passing all `keyring` params in `apt::source`
2 parents bee5ee1 + 5b78cf7 commit f9be175

File tree

3 files changed

+33
-38
lines changed

3 files changed

+33
-38
lines changed

REFERENCE.md

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -660,39 +660,30 @@ apt::source { 'puppet8-release':
660660

661661
The following parameters are available in the `apt::keyring` defined type:
662662

663-
* [`keyring_dir`](#-apt--keyring--keyring_dir)
664-
* [`keyring_filename`](#-apt--keyring--keyring_filename)
665-
* [`keyring_file`](#-apt--keyring--keyring_file)
666-
* [`keyring_file_mode`](#-apt--keyring--keyring_file_mode)
663+
* [`dir`](#-apt--keyring--dir)
664+
* [`filename`](#-apt--keyring--filename)
665+
* [`mode`](#-apt--keyring--mode)
667666
* [`source`](#-apt--keyring--source)
668667
* [`content`](#-apt--keyring--content)
669668
* [`ensure`](#-apt--keyring--ensure)
670669

671-
##### <a name="-apt--keyring--keyring_dir"></a>`keyring_dir`
670+
##### <a name="-apt--keyring--dir"></a>`dir`
672671

673672
Data type: `Stdlib::Absolutepath`
674673

675674
Path to the directory where the keyring will be stored.
676675

677676
Default value: `'/etc/apt/keyrings'`
678677

679-
##### <a name="-apt--keyring--keyring_filename"></a>`keyring_filename`
678+
##### <a name="-apt--keyring--filename"></a>`filename`
680679

681680
Data type: `String[1]`
682681

683682
Optional filename for the keyring. It should also contain extension along with the filename.
684683

685684
Default value: `$name`
686685

687-
##### <a name="-apt--keyring--keyring_file"></a>`keyring_file`
688-
689-
Data type: `Stdlib::Absolutepath`
690-
691-
File path of the keyring.
692-
693-
Default value: `"${keyring_dir}/${keyring_filename}"`
694-
695-
##### <a name="-apt--keyring--keyring_file_mode"></a>`keyring_file_mode`
686+
##### <a name="-apt--keyring--mode"></a>`mode`
696687

697688
Data type: `Stdlib::Filemode`
698689

manifests/keyring.pp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,13 @@
1414
# }
1515
# }
1616
#
17-
# @param keyring_dir
17+
# @param dir
1818
# Path to the directory where the keyring will be stored.
1919
#
20-
# @param keyring_filename
20+
# @param filename
2121
# Optional filename for the keyring. It should also contain extension along with the filename.
2222
#
23-
# @param keyring_file
24-
# File path of the keyring.
25-
#
26-
# @param keyring_file_mode
23+
# @param mode
2724
# File permissions of the keyring.
2825
#
2926
# @param source
@@ -36,34 +33,35 @@
3633
# Ensure presence or absence of the resource.
3734
#
3835
define apt::keyring (
39-
Stdlib::Absolutepath $keyring_dir = '/etc/apt/keyrings',
40-
String[1] $keyring_filename = $name,
41-
Stdlib::Absolutepath $keyring_file = "${keyring_dir}/${keyring_filename}",
42-
Stdlib::Filemode $keyring_file_mode = '0644',
36+
Stdlib::Absolutepath $dir = '/etc/apt/keyrings',
37+
String[1] $filename = $name,
38+
Stdlib::Filemode $mode = '0644',
4339
Optional[Stdlib::Filesource] $source = undef,
4440
Optional[String[1]] $content = undef,
4541
Enum['present','absent'] $ensure = 'present',
4642
) {
47-
ensure_resource('file', $keyring_dir, { ensure => 'directory', mode => '0755', })
43+
ensure_resource('file', $dir, { ensure => 'directory', mode => '0755', })
4844
if $source and $content {
4945
fail("Parameters 'source' and 'content' are mutually exclusive")
5046
} elsif ! $source and ! $content {
5147
fail("One of 'source' or 'content' parameters are required")
5248
}
5349

50+
$file = "${dir}/${filename}"
51+
5452
case $ensure {
5553
'present': {
56-
file { $keyring_file:
54+
file { $file:
5755
ensure => 'file',
58-
mode => $keyring_file_mode,
56+
mode => $mode,
5957
owner => 'root',
6058
group => 'root',
6159
source => $source,
6260
content => $content,
6361
}
6462
}
6563
'absent': {
66-
file { $keyring_file:
64+
file { $file:
6765
ensure => $ensure,
6866
}
6967
}

manifests/source.pp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -183,17 +183,23 @@
183183
# Modern apt keyrings
184184
elsif $_key =~ Hash and $_key['name'] {
185185
apt::keyring { $_key['name']:
186-
ensure => $_key_ensure,
187-
content => $_key['content'],
188-
source => $_key['source'],
189-
keyring_filename => $_key['filename'],
190-
before => $_before,
186+
ensure => $_key_ensure,
187+
content => $_key['content'],
188+
source => $_key['source'],
189+
dir => $_key['dir'],
190+
filename => $_key['filename'],
191+
mode => $_key['mode'],
192+
before => $_before,
191193
}
192-
# TODO replace this block with a reference to the apt::keyring's final filename/full_path
193-
if $_key['filename'] {
194-
$_list_keyring = $_key['filename']
194+
195+
$_list_keyring = if $_key['dir'] and $_key['filename'] {
196+
"${_key['dir']}${_key['filename']}"
197+
} elsif $_key['filename'] {
198+
"/etc/apt/keyrings/${_key['filename']}"
199+
} elsif $_key['dir'] {
200+
"${_key['dir']}${_key['name']}"
195201
} else {
196-
$_list_keyring = "/etc/apt/keyrings/${_key['name']}"
202+
"/etc/apt/keyrings/${_key['name']}"
197203
}
198204
}
199205
} else {

0 commit comments

Comments
 (0)