2664c9ba6a40199fde9203b6d99b07a3cf1a8615
[puppet-modules/puppetlabs-apt.git] / manifests / pin.pp
1 # pin.pp
2 # pin a release in apt, useful for unstable repositories
3
4 define apt::pin(
5   $ensure   = present,
6   $packages = '*',
7   $priority = 0,
8   $release  = '',
9   $origin   = ''
10 ) {
11
12   include apt::params
13
14   $preferences_d = $apt::params::preferences_d
15
16   if $release != '' {
17     $pin = "release a=${release}"
18   } elsif $origin != '' {
19     $pin = "origin \"${origin}\""
20   } else {
21     err("Apt::Pin needs either $release or $origin")
22   }
23
24   file { "${name}.pref":
25     ensure  => $ensure,
26     path    => "${preferences_d}/${name}",
27     owner   => root,
28     group   => root,
29     mode    => '0644',
30     content => "# ${name}\nPackage: ${packages}\nPin: ${pin}\nPin-Priority: ${priority}",
31   }
32 }