96a3d70643455e96b1eb007961d9b674ad99e7bb
[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   $order      = '',
7   $packages   = '*',
8   $priority   = 0,
9   $release    = '',
10   $origin     = '',
11   $originator = ''
12 ) {
13
14   include apt::params
15
16   $preferences_d = $apt::params::preferences_d
17
18   if $order != '' and !is_integer($order) {
19     fail('Only integers are allowed in the apt::pin order param')
20   }
21
22   if $release != '' {
23     $pin = "release a=${release}"
24   } elsif $origin != '' {
25     $pin = "origin \"${origin}\""
26   } elsif $originator != '' {
27     $pin = "release o=${originator}"
28   } else {
29     $pin = "release a=${name}"
30   }
31
32   $path = $order ? {
33     ''      => "${preferences_d}/${name}.pref",
34     default => "${preferences_d}/${order}-${name}.pref",
35   }
36   file { "${name}.pref":
37     ensure  => $ensure,
38     path    => $path,
39     owner   => root,
40     group   => root,
41     mode    => '0644',
42     content => template("apt/pin.pref.erb"),
43   }
44 }