summaryrefslogtreecommitdiff
path: root/manifests/preferences.pp
blob: 0ec77cfec4059c1f4b5fbedf70153b0d62220e8a (plain)
1
2
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
# Configure basic pins for debian/Ubuntu codenames
#
# This all ensures that apt behaves as expected with regards to packages when
# we have more sources than just the one for the current codenamed release.
#
# This class should not be included directly. It is automatically called in by
# the 'apt' class. Thus you should use the apt class instead.
#
class apt::preferences {

  file { '/etc/apt/preferences':
    ensure => absent,
  }
  # Remove the file that we were previously deploying. It's now been renamed to
  # current_codename
  file { '/etc/apt/preferences.d/stable':
    ensure => absent,
  }

  if ($apt::manage_preferences == true) and ($apt::custom_preferences != undef) {
    file { '/etc/apt/preferences.d/custom':
      ensure  => present,
      alias   => 'apt_config',
      content => template($apt::custom_preferences),
      owner   => 'root',
      group   => 0,
      mode    => '0644',
      require => File['/etc/apt/sources.list'],
    }
    file { '/etc/apt/preferences.d/current_codename':
      ensure => absent,
    }
    file { '/etc/apt/preferences.d/volatile':
      ensure => absent,
    }
    file { '/etc/apt/preferences.d/lts':
      ensure => absent,
    }
    file { '/etc/apt/preferences.d/nextcodename':
      ensure => absent,
    }
  }
  elsif $apt::manage_preferences == true {

    if $::operatingsystem == 'Debian' {
      file { '/etc/apt/preferences.d/current_codename':
        ensure  => present,
        alias   => 'apt_config',
        content => template('apt/Debian/current_codename.erb'),
        owner   => 'root',
        group   => 0,
        mode    => '0644',
        require => File['/etc/apt/sources.list'],
      }
      # Cleanup for cases where users might switch from using
      # custom_preferences to not using it anymore.
      file { '/etc/apt/preferences.d/custom':
        ensure => absent,
      }
      # This file ensures that all debian packages that don't have a
      # preference file shouldn't be considered for auto-install or upgrade at
      # all.
      file { '/etc/apt/preferences.d/debian_fallback':
        ensure  => present,
        source  => 'puppet:///modules/apt/Debian/preferences_fallback',
        owner   => 'root',
        group   => 0,
        mode    => '0644',
        require => File['/etc/apt/sources.list'],
      }

      if $apt::use_volatile {
        file { '/etc/apt/preferences.d/volatile':
          ensure  => present,
          content => template('apt/Debian/volatile.erb'),
          owner   => 'root',
          group   => 0,
          mode    => '0644',
          require => File['/etc/apt/sources.list'],
        }
      }

      if $apt::use_lts {
        file { '/etc/apt/preferences.d/lts':
          ensure  => present,
          content => template('apt/Debian/lts.erb'),
          owner   => 'root',
          group   => 0,
          mode    => '0644',
          require => File['/etc/apt/sources.list'],
        }
      }

      if ($::debian_nextcodename) and ($::debian_nextcodename != 'experimental') {
        file { '/etc/apt/preferences.d/nextcodename':
          ensure  => present,
          content => template('apt/Debian/nextcodename.erb'),
          owner   => 'root',
          group   => 0,
          mode    => '0644',
          require => File['/etc/apt/sources.list'],
        }
      }
    }
    elsif $::operatingsystem == 'Ubuntu' {
      file { '/etc/apt/preferences':
        ensure  => present,
        alias   => 'apt_config',
        # only update together
        content => template("apt/Ubuntu/preferences_${apt::codename}.erb"),
        owner   => 'root',
        group   => 0,
        mode    => '0644',
        require => File['/etc/apt/sources.list'],
      }
    }
  }
  elsif $apt::manage_preferences == false {
    file { '/etc/apt/preferences.d/custom':
      ensure => absent,
    }
    file { '/etc/apt/preferences.d/current_codename':
        ensure => absent,
    }
    file { '/etc/apt/preferences.d/volatile':
        ensure => absent,
    }
    file { '/etc/apt/preferences.d/lts':
        ensure => absent,
    }
    file { '/etc/apt/preferences.d/nextcodename':
        ensure => absent,
    }
  }
}