aboutsummaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
authordavid <david@f03ff2f1-f02d-0410-970d-b9634babeaa1>2007-06-25 09:50:19 +0000
committerdavid <david@f03ff2f1-f02d-0410-970d-b9634babeaa1>2007-06-25 09:50:19 +0000
commitf0c91f753a67436ed517b7bd231ee892a8f6c071 (patch)
treebe7496fb0785708d90ba609d1ccf05b54fa6e4fc /manifests
downloadpuppet-apt-f0c91f753a67436ed517b7bd231ee892a8f6c071.tar.gz
puppet-apt-f0c91f753a67436ed517b7bd231ee892a8f6c071.tar.bz2
modularised apt
git-svn-id: http://club.black.co.at:82/svn/manifests/trunk@58 f03ff2f1-f02d-0410-970d-b9634babeaa1
Diffstat (limited to 'manifests')
-rw-r--r--manifests/init.pp91
1 files changed, 91 insertions, 0 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
new file mode 100644
index 0000000..c9e61bc
--- /dev/null
+++ b/manifests/init.pp
@@ -0,0 +1,91 @@
+# apt.pp - common components and defaults for handling apt
+# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
+# See LICENSE for the full license granted to you.
+#
+# With hints from
+# Micah Anderson <micah@riseup.net>
+# * backports key
+
+class apt {
+
+ # See README
+ $real_apt_clean = $apt_clean ? {
+ '' => 'auto',
+ default => $apt_clean,
+ }
+
+ # a few templates need lsbdistcodename
+ include assert_lsbdistcodename
+
+ config_file {
+ # include main, security and backports
+ # additional sources could be included via an array
+ "/etc/apt/sources.list":
+ content => template("apt/sources.list.erb"),
+ require => Exec[assert_lsbdistcodename];
+ # this just pins unstable and testing to very low values
+ "/etc/apt/preferences":
+ content => template("apt/preferences.erb"),
+ # use File[apt_config] to reference a completed configuration
+ # See "The Puppet Semaphor" 2007-06-25 on the puppet-users ML
+ alias => apt_config,
+ # only update together
+ require => File["/etc/apt/sources.list"];
+ # little default settings which keep the system sane
+ "/etc/apt/apt.conf.d/from_puppet":
+ content => "APT::Get::Show-Upgraded true;\nDSelect::Clean $real_apt_clean;\n",
+ before => File[apt_config];
+ }
+
+ $base_dir = "/var/lib/puppet/modules/apt"
+ file {
+ # remove my legacy files
+ [ "/etc/apt/backports.key", "/etc/apt/apt.conf.d/local-conf" ]:
+ ensure => removed;
+ # create new modules dir
+ $base_dir: ensure => directory;
+ # watch apt.conf.d
+ "/etc/apt/apt.conf.d": ensure => directory, checksum => mtime;
+ }
+
+ # suppress annoying help texts of dselect
+ line { dselect_expert:
+ file => "/etc/dpkg/dselect.cfg",
+ line => "expert",
+ ensure => present,
+ }
+
+ exec {
+ "/usr/bin/apt-get -y update #on refresh":
+ refreshonly => true,
+ subscribe => [ File["/etc/apt/sources.list"],
+ File["/etc/apt/preferences"], File["/etc/apt/apt.conf.d"],
+ File[apt_config] ];
+ "/usr/bin/apt-get -y update && /usr/bin/apt-get autoclean #hourly":
+ require => [ File["/etc/apt/sources.list"],
+ File["/etc/apt/preferences"], File[apt_config] ],
+ # Another Semaphor for all packages to reference
+ alias => apt_updated;
+ }
+
+ case $lsbdistcodename {
+ etch: {
+ ## This package should really always be current
+ package { "debian-archive-keyring": ensure => latest, }
+
+ # This key was downloaded from
+ # http://backports.org/debian/archive.key
+ # and is needed to verify the backports
+ file { "${base_dir}/backports.org.key":
+ source => "puppet://$servername/apt/backports.org.key",
+ mode => 0444, owner => root, group => root,
+ before => File[apt_config],
+ }
+ exec { "/usr/bin/apt-key add ${base_dir}/backports.org.key":
+ refreshonly => true,
+ subscribe => File["${base_dir}/backports.org.key"],
+ before => File[apt_config],
+ }
+ }
+ }
+}