split out apt config into own class. use multi-suite site::aptrepo
[mirror/dsa-puppet.git] / modules / debian-org / manifests / apt.pp
1 # == Class: debian-org
2 #
3 # Stuff common to all debian.org servers
4 #
5 class debian-org::apt {
6         if $::lsbmajdistrelease <= 7 {
7                 $mungedcodename = $::lsbdistcodename
8         } elsif ($::debarchitecture in ['kfreebsd-amd64', 'kfreebsd-i386']) {
9                 $mungedcodename = "${::lsbdistcodename}-kfreebsd"
10         } else {
11                 $mungedcodename = $::lsbdistcodename
12         }
13
14         if $::lsbmajdistrelease <= 8 {
15                 $fallbackmirror = 'http://cdn-fastly.deb.debian.org/debian/'
16         } else {
17                 $fallbackmirror = 'http://deb.debian.org/debian/'
18         }
19
20         if getfromhash($site::nodeinfo, 'hoster', 'mirror-debian') {
21                 $mirror = [ getfromhash($site::nodeinfo, 'hoster', 'mirror-debian'), $fallbackmirror ]
22         } else {
23                 $mirror = [ $fallbackmirror ]
24         }
25
26         site::aptrepo { 'debian':
27                 url        => $mirror,
28                 suite      => [ $mungedcodename, "${::lsbdistcodename}-backports", "${::lsbdistcodename}-updates" ],
29                 components => ['main','contrib','non-free']
30         }
31         site::aptrepo { 'security':
32                 url        => [ 'http://security-cdn.debian.org/', 'http://security.debian.org/' ],
33                 suite      => "${mungedcodename}/updates",
34                 components => ['main','contrib','non-free']
35         }
36         site::aptrepo { 'db.debian.org':
37                 url        => 'http://db.debian.org/debian-admin',
38                 suite      => [ 'debian-all', $::lsbdistcodename ],
39                 components => 'main',
40                 key        => 'puppet:///modules/debian-org/db.debian.org.gpg',
41         }
42
43         if ($::hostname in [] or $::debarchitecture in ['kfreebsd-amd64', 'kfreebsd-i386']) {
44                 site::aptrepo { 'proposed-updates':
45                         url        => $mirror,
46                         suite      => "${mungedcodename}-proposed-updates",
47                         components => ['main','contrib','non-free']
48                 }
49         } else {
50                 site::aptrepo { 'proposed-updates':
51                         ensure => absent,
52                 }
53         }
54
55         site::aptrepo { 'debian-cdn':
56                 ensure => absent,
57         }
58         site::aptrepo { 'debian.org':
59                 ensure => absent,
60         }
61         site::aptrepo { 'debian2':
62                 ensure => absent,
63         }
64         site::aptrepo { 'backports2.debian.org':
65                 ensure => absent,
66         }
67         site::aptrepo { 'backports.debian.org':
68                 ensure => absent,
69         }
70         site::aptrepo { 'volatile':
71                 ensure => absent,
72         }
73         site::aptrepo { 'db.debian.org-suite':
74                 ensure => absent,
75         }
76         site::aptrepo { 'debian-lts':
77                 ensure => absent,
78         }
79
80
81
82
83         file { '/etc/apt/trusted-keys.d':
84                 ensure => absent,
85                 force  => true,
86         }
87
88         file { '/etc/apt/trusted.gpg':
89                 mode    => '0600',
90                 content => "",
91         }
92
93         file { '/etc/apt/preferences':
94                 source => 'puppet:///modules/debian-org/apt.preferences',
95         }
96         file { '/etc/apt/apt.conf.d/local-compression':
97                 source => 'puppet:///modules/debian-org/apt.conf.d/local-compression',
98         }
99         file { '/etc/apt/apt.conf.d/local-recommends':
100                 source => 'puppet:///modules/debian-org/apt.conf.d/local-recommends',
101         }
102         file { '/etc/apt/apt.conf.d/local-pdiffs':
103                 source => 'puppet:///modules/debian-org/apt.conf.d/local-pdiffs',
104         }
105         file { '/etc/apt/apt.conf.d/local-langs':
106                 source => 'puppet:///modules/debian-org/apt.conf.d/local-langs',
107         }
108
109         exec { 'apt-get update':
110                 path    => '/usr/bin:/usr/sbin:/bin:/sbin',
111                 onlyif  => '/usr/local/bin/check_for_updates',
112                 require => File['/usr/local/bin/check_for_updates']
113         }
114         Exec['apt-get update']->Package<| tag == extra_repo |>
115 }