Defined Type: apt::source
- Defined in:
- manifests/source.pp
Overview
source.pp add an apt source
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'manifests/source.pp', line 3
define apt::source(
$location = undef,
$comment = $name,
$ensure = present,
$release = undef,
$repos = 'main',
$include = {},
$key = undef,
$pin = undef,
$architecture = undef,
$allow_unsigned = false,
$include_src = undef,
$include_deb = undef,
$required_packages = undef,
$key_server = undef,
$key_content = undef,
$key_source = undef,
$trusted_source = undef,
) {
validate_string($architecture, $comment, $location, $repos)
validate_bool($allow_unsigned)
validate_hash($include)
# This is needed for compat with 1.8.x
include ::apt
$_before = Apt::Setting["list-${title}"]
if $include_src != undef {
warning("\$include_src is deprecated and will be removed in the next major release, please use \$include => { 'src' => ${include_src} } instead")
}
if $include_deb != undef {
warning("\$include_deb is deprecated and will be removed in the next major release, please use \$include => { 'deb' => ${include_deb} } instead")
}
if $required_packages != undef {
warning('$required_packages is deprecated and will be removed in the next major release, please use package resources instead.')
exec { "Required packages: '${required_packages}' for ${name}":
command => "${::apt::params::provider} -y install ${required_packages}",
logoutput => 'on_failure',
refreshonly => true,
tries => 3,
try_sleep => 1,
before => $_before,
}
}
if $key_server != undef {
warning("\$key_server is deprecated and will be removed in the next major release, please use \$key => { 'server' => ${key_server} } instead.")
}
if $key_content != undef {
warning("\$key_content is deprecated and will be removed in the next major release, please use \$key => { 'content' => ${key_content} } instead.")
}
if $key_source != undef {
warning("\$key_source is deprecated and will be removed in the next major release, please use \$key => { 'source' => ${key_source} } instead.")
}
if $trusted_source != undef {
warning('$trusted_source is deprecated and will be removed in the next major release, please use $allow_unsigned instead.')
$_allow_unsigned = $trusted_source
} else {
$_allow_unsigned = $allow_unsigned
}
if ! $release {
$_release = $::apt::params::xfacts['lsbdistcodename']
unless $_release {
fail('lsbdistcodename fact not available: release parameter required')
}
} else {
$_release = $release
}
if $ensure == 'present' and ! $location {
fail('cannot create a source entry without specifying a location')
}
if $include_src != undef and $include_deb != undef {
$_deprecated_include = {
'src' => $include_src,
'deb' => $include_deb,
}
} elsif $include_src != undef {
$_deprecated_include = { 'src' => $include_src }
} elsif $include_deb != undef {
$_deprecated_include = { 'deb' => $include_deb }
} else {
$_deprecated_include = {}
}
$_include = merge($::apt::params::include_defaults, $_deprecated_include, $include)
$_deprecated_key = {
'key_server' => $key_server,
'key_content' => $key_content,
'key_source' => $key_source,
}
if $key {
if is_hash($key) {
unless $key['id'] {
fail('key hash must contain at least an id entry')
}
$_key = merge($::apt::params::source_key_defaults, $_deprecated_key, $key)
} else {
validate_string($key)
$_key = merge( { 'id' => $key }, $_deprecated_key)
}
}
apt::setting { "list-${name}":
ensure => $ensure,
content => template('apt/_header.erb', 'apt/source.list.erb'),
}
if $pin {
if is_hash($pin) {
$_pin = merge($pin, { 'ensure' => $ensure, 'before' => $_before })
} elsif (is_numeric($pin) or is_string($pin)) {
$url_split = split($location, '/')
$host = $url_split[2]
$_pin = {
'ensure' => $ensure,
'priority' => $pin,
'before' => $_before,
'origin' => $host,
}
} else {
fail('Received invalid value for pin parameter')
}
create_resources('apt::pin', { "${name}" => $_pin })
}
# We do not want to remove keys when the source is absent.
if $key and ($ensure == 'present') {
if is_hash($_key) {
apt::key { "Add key: ${$_key['id']} from Apt::Source ${title}":
ensure => present,
id => $_key['id'],
server => $_key['server'],
content => $_key['content'],
source => $_key['source'],
options => $_key['options'],
key_server => $_key['key_server'],
key_content => $_key['key_content'],
key_source => $_key['key_source'],
before => $_before,
}
}
}
}
|