Browse Source

Adds apt::{conf,backports} and variable style.

  With the addition of this patch two new defines will be added; one to
  manage APT configuration files (apt::conf) and one that abstracts out the
  requirements needed to turn on backport repositories (apt::backports).

  In addition, the patch takes the opportunity to clean up variable
  definitions so they follow a consistent pattern of setting local
  variables to the fully qualified value stored in the apt::params
  class.  Previously all variable used within a class directly addressed
  the apt::params namespace when ever the variable was used.  In the
  pattern they now adhere to we can more easily switch the namespace
  data lives in or externalize it even more using hiera.
Cody Herriges 12 years ago
parent
commit
e5f2dfe294

+ 45 - 0
manifests/backports.pp

@@ -0,0 +1,45 @@
+# This adds the necessary components to get backports for ubuntu and debian
+#
+# == Parameters
+#
+# [*release*]
+#   The ubuntu/debian release name. Defaults to $lsbdistcodename. Setting this
+#   manually can cause undefined behavior. (Read: universe exploding)
+#
+# == Examples
+#
+#   include apt::backports
+#
+#   class { 'apt::backports':
+#     release => 'natty',
+#   }
+#
+# == Authors
+#
+# Ben Hughes, I think. At least blame him if this goes wrong. I just added puppet doc.
+#
+# == Copyright
+#
+# Copyright 2011 Puppet Labs Inc, unless otherwise noted.
+class apt::backports(
+  $release  = $lsbdistcodename,
+  $location = $apt::params::backports_locations
+) inherits apt::params {
+
+  apt::source { 'backports.list':
+    location   => $location,
+    release    => "${release}-backports",
+    repos      => $lsbdistid ? {
+      'debian' => 'main contrib non-free',
+      'ubuntu' => 'universe multiverse restricted',
+    },
+    key        => $lsbdistid ? {
+      'debian' => '55BE302B',
+      'ubuntu' => '437D05B5',
+    },
+    key_server => 'pgp.mit.edu',
+    pin        => '200',
+    notify => Exec["apt-get update"],
+  }
+}
+

+ 17 - 0
manifests/conf.pp

@@ -0,0 +1,17 @@
+define apt::conf (
+  $priority = '50',
+  $content
+  ) {
+
+  include apt::params
+
+  $root       = "${apt::params::root}"
+  $apt_conf_d = "${apt::params::apt_conf_d}"
+
+  file { "${apt_conf_d}/${priority}${name}":
+    content => $content,
+    owner   => root,
+    group   => root,
+    mode    => 0644,
+  }
+}

+ 1 - 1
manifests/debian/testing.pp

@@ -1,6 +1,7 @@
 # testing.pp
 
 class apt::debian::testing {
+  include apt
 
   # deb http://debian.mirror.iweb.ca/debian/ testing main contrib non-free
   # deb-src http://debian.mirror.iweb.ca/debian/ testing main contrib non-free
@@ -17,5 +18,4 @@ class apt::debian::testing {
     key_server        => 'subkeys.pgp.net',
     pin               => '-10',
   }
-
 }

+ 1 - 1
manifests/debian/unstable.pp

@@ -1,6 +1,7 @@
 # unstable.pp
 
 class apt::debian::unstable {
+  include apt
 
   # deb http://debian.mirror.iweb.ca/debian/ unstable main contrib non-free
   # deb-src http://debian.mirror.iweb.ca/debian/ unstable main contrib non-free
@@ -17,5 +18,4 @@ class apt::debian::unstable {
     key_server        => 'subkeys.pgp.net',
     pin               => '-10',
   }
-
 }

+ 0 - 1
manifests/force.pp

@@ -18,5 +18,4 @@ define apt::force(
   exec { "/usr/bin/aptitude -y -t ${release} install ${name}${version_string}":
     unless => $install_check,
   }
-
 }

+ 12 - 6
manifests/init.pp

@@ -45,9 +45,15 @@ class apt(
     false =>  undef,
     true  => "# Repos managed by puppet.\n",
   }
+
+  $root           = $apt::params::root
+  $apt_conf_d     = $apt::params::apt_conf_d
+  $sources_list_d = $apt::params::sources_list_d
+  $provider       = $apt::params::provider
+
   file { 'sources.list':
     ensure  => present,
-    path    => "${apt::params::root}/sources.list",
+    path    => "${root}/sources.list",
     owner   => root,
     group   => root,
     mode    => '0644',
@@ -56,7 +62,7 @@ class apt(
 
   file { 'sources.list.d':
     ensure  => directory,
-    path    => "${apt::params::root}/sources.list.d",
+    path    => $sources_list_d
     owner   => root,
     group   => root,
     purge   => $purge_sources_list_d,
@@ -64,7 +70,7 @@ class apt(
   }
 
   exec { 'apt_update':
-    command     => "${apt::params::provider} update",
+    command     => "${provider} update",
     subscribe   => [ File['sources.list'], File['sources.list.d'] ],
     refreshonly => $refresh_only_apt_update,
   }
@@ -74,13 +80,13 @@ class apt(
       file { '99unauth':
         ensure  => present,
         content => "APT::Get::AllowUnauthenticated 1;\n",
-        path    => '/etc/apt/apt.conf.d/99unauth',
+        path    => "${apt_conf_d}/99unauth",
       }
     }
     false: {
       file { '99unauth':
         ensure => absent,
-        path   => '/etc/apt/apt.conf.d/99unauth',
+        path   => "${apt_conf_d}/99unauth",
       }
     }
     undef: { } # do nothing
@@ -89,7 +95,7 @@ class apt(
 
   if($proxy_host) {
     file { 'configure-apt-proxy':
-      path    => '/etc/apt/apt.conf.d/proxy',
+      path    => "${apt_conf_d}/proxy",
       content => "Acquire::http::Proxy \"http://${proxy_host}:${proxy_port}\";",
     }
   }

+ 18 - 0
manifests/params.pp

@@ -2,4 +2,22 @@ class apt::params {
   $root           = '/etc/apt'
   $provider       = '/usr/bin/apt-get'
   $sources_list_d = "${root}/sources.list.d"
+  $apt_conf_d     = "${root}/apt.conf.d"
+  $preferences_d  = "${root}/preferences.d"
+
+  case $lsbdistid {
+    'debian': {
+      $backports_location = 'http://backports.debian.org/debian-backports'
+    }
+    'ubuntu': {
+      case $lsbdistcodename {
+        'hardy','lucid','maverick','natty','oneiric','precise': {
+          $backports_location = http://us.archive.ubuntu.com/ubuntuk
+        }
+        default: {
+          $backports_location = 'http://old-releases.ubuntu.com/ubuntu',
+        }
+      }
+    }
+  }
 }

+ 3 - 1
manifests/pin.pp

@@ -8,9 +8,11 @@ define apt::pin(
 
   include apt::params
 
+  $preferences_d = $apt::params::preferences_d
+
   file { "${name}.pref":
     ensure  => file,
-    path    => "${apt::params::root}/preferences.d/${name}",
+    path    => "${preferences_d}/${name}",
     owner   => root,
     group   => root,
     mode    => '0644',

+ 4 - 3
manifests/ppa.pp

@@ -8,6 +8,8 @@ define apt::ppa(
 
   include apt::params
 
+  $sources_list_d = $apt::params::sources_list_d
+
   if ! $release {
     fail('lsbdistcodename fact not available: release parameter required')
   }
@@ -24,13 +26,12 @@ define apt::ppa(
   exec { "add-apt-repository-${name}":
     command => "/usr/bin/add-apt-repository ${name}",
     notify  => Exec["apt-update-${name}"],
-    creates => "${apt::params::sources_list_d}/${sources_list_d_filename}",
+    creates => "${sources_list_d}/${sources_list_d_filename}",
   }
 
-  file { "${apt::params::sources_list_d}/${sources_list_d_filename}":
+  file { "${sources_list_d}/${sources_list_d_filename}":
     ensure  => file,
     require => Exec["add-apt-repository-${name}"];
   }
-
 }
 

+ 3 - 1
manifests/release.pp

@@ -6,7 +6,9 @@ class apt::release (
 
   include apt::params
 
-  file { "${apt::params::root}/apt.conf.d/01release":
+  $root = $apt::params::root
+
+  file { "${root}/apt.conf.d/01release":
     owner   => root,
     group   => root,
     mode    => '0644',

+ 6 - 3
manifests/source.pp

@@ -16,13 +16,16 @@ define apt::source(
 
   include apt::params
 
+  $sources_list_d = $apt::params::sources_list_d
+  $provider       = $apt::params::provider
+
   if $release == undef {
     fail('lsbdistcodename fact not available: release parameter required')
   }
 
   file { "${name}.list":
     ensure  => file,
-    path    => "${apt::params::root}/sources.list.d/${name}.list",
+    path    => "${apt::params::sources_list_d}/${name}.list",
     owner   => root,
     group   => root,
     mode    => '0644',
@@ -34,14 +37,14 @@ define apt::source(
   }
 
   exec { "${name} apt update":
-    command     => "${apt::params::provider} update",
+    command     => "${provider} update",
     subscribe   => File["${name}.list"],
     refreshonly => true,
   }
 
   if $required_packages != false {
     exec { "Required packages: '${required_packages}' for ${name}":
-      command     => "${apt::params::provider} -y install ${required_packages}",
+      command     => "${provider} -y install ${required_packages}",
       subscribe   => File["${name}.list"],
       refreshonly => true,
     }