]> gitweb.fluxo.info Git - puppet-tor.git/commitdiff
refactor daemon and main class for better design
authormh <mh@immerda.ch>
Wed, 2 Jan 2013 12:54:57 +0000 (13:54 +0100)
committermh <mh@immerda.ch>
Wed, 2 Jan 2013 12:54:57 +0000 (13:54 +0100)
By extracting the resources to their own class we can avoid a bug
in puppet that makes it hard to deal with inherited parametrized
classes.

12 files changed:
README
manifests/base.pp [new file with mode: 0644]
manifests/compact.pp
manifests/daemon.pp
manifests/daemon/base.pp [new file with mode: 0644]
manifests/daemon/map_address.pp
manifests/init.pp
manifests/munin.pp
manifests/polipo.pp
manifests/polipo/base.pp
manifests/polipo/debian.pp
manifests/torsocks.pp

diff --git a/README b/README
index 49b91f05f8877c9d710fc2cd31d0eaf108b7c608..c241118659db31053b1ad27964de359e9e40f1d7 100644 (file)
--- a/README
+++ b/README
@@ -81,14 +81,12 @@ config, for example the following will use syslog:
     }
 
 If you want to set specific options for the tor class,
-you need to define it before tor::daemon in your manifests,
+you may pass them directly to the tor::daemon in your manifests,
 e.g.:
 
-    class { '::tor':
-      use_munin => true,
-    }
     class { '::tor::daemon':
-      automap_hosts_on_resolve => 1,
+      use_munin                 => true,
+      automap_hosts_on_resolve  => 1,
     }
 
 Configuring socks
diff --git a/manifests/base.pp b/manifests/base.pp
new file mode 100644 (file)
index 0000000..b98451b
--- /dev/null
@@ -0,0 +1,14 @@
+# basic management of resources for tor
+class tor::base {
+  package { [ 'tor', 'tor-geoipdb' ]:
+    ensure => $tor::ensure_version,
+  }
+
+  service { 'tor':
+    ensure     => running,
+    enable     => true,
+    hasrestart => true,
+    hasstatus  => true,
+    require    => Package['tor'],
+  }
+}
index 472a4a60cc7042767d5379f0261629ebeaf87e56..c0f59199ec76b2683595ad83212b921ddd889d9d 100644 (file)
@@ -1,3 +1,5 @@
+# manage a complete tor
+# installation with all the basics
 class tor::compact {
   include ::tor
   include tor::polipo
index 1f4ea490d0321141434f378dc81e24af60113aef..000c959d22d4f952d141628803eb5a56ef28ab41 100644 (file)
@@ -1,79 +1,18 @@
+# manage a snippet based tor installation
 class tor::daemon (
+  $ensure_version           = 'installed',
+  $use_munin                = false,
   $data_dir                 = '/var/lib/tor',
   $config_file              = '/etc/tor/torrc',
   $use_bridges              = 0,
   $automap_hosts_on_resolve = 0,
   $log_rules                = [ 'notice file /var/log/tor/notices.log' ]
-) inherits tor {
+) {
 
-  # packages, user, group
-  Service['tor'] {
-    subscribe => File[$config_file],
+  class{'tor':
+    ensure_version => $ensure_version,
+    use_munin      => $use_munin,
   }
 
-  Package[ 'tor' ] {
-    require => File[$data_dir],
-  }
-
-  group { 'debian-tor':
-    ensure    => present,
-    allowdupe => false,
-  }
-
-  user { 'debian-tor':
-    ensure    => present,
-    allowdupe => false,
-    comment   => 'tor user,,,',
-    home      => $data_dir,
-    shell     => '/bin/false',
-    gid       => 'debian-tor',
-    require   => Group['debian-tor'],
-  }
-
-  # directories
-  file { $data_dir:
-    ensure  => directory,
-    mode    => '0700',
-    owner   => 'debian-tor',
-    group   => 'debian-tor',
-    require => User['debian-tor'],
-  }
-
-  file { '/etc/tor':
-    ensure  => directory,
-    mode    => '0755',
-    owner   => 'debian-tor',
-    group   => 'debian-tor',
-    require => User['debian-tor'],
-  }
-
-  file { '/var/lib/puppet/modules/tor':
-    ensure  => absent,
-    recurse => true,
-    force   => true,
-  }
-
-  # tor configuration file
-  concat { $config_file:
-    mode   => '0600',
-    owner  => 'debian-tor',
-    group  => 'debian-tor',
-  }
-
-  # config file headers
-  concat::fragment { '00.header':
-    ensure  => present,
-    content => template('tor/torrc.header.erb'),
-    owner   => 'debian-tor', group => 'debian-tor', mode => '0644',
-    order   => 00,
-    target  => $config_file,
-  }
-
-  # global configurations
-  concat::fragment { '01.global':
-    content => template('tor/torrc.global.erb'),
-    owner   => 'debian-tor', group => 'debian-tor', mode => '0644',
-    order   => 01,
-    target  => $config_file,
-  }
+  include tor::daemon::base
 }
diff --git a/manifests/daemon/base.pp b/manifests/daemon/base.pp
new file mode 100644 (file)
index 0000000..63d7bc4
--- /dev/null
@@ -0,0 +1,77 @@
+# extend basic tor things with a snippet based daemon configuration
+class tor::daemon::base inherits tor::base {
+  # packages, user, group
+  Service['tor'] {
+    subscribe => File[$tor::daemon::config_file],
+  }
+
+  Package[ 'tor' ] {
+    require => File[$tor::daemon::data_dir],
+  }
+
+  group { 'debian-tor':
+    ensure    => present,
+    allowdupe => false,
+  }
+
+  user { 'debian-tor':
+    ensure    => present,
+    allowdupe => false,
+    comment   => 'tor user,,,',
+    home      => $tor::daemon::data_dir,
+    shell     => '/bin/false',
+    gid       => 'debian-tor',
+    require   => Group['debian-tor'],
+  }
+
+  # directories
+  file { $tor::daemon::data_dir:
+    ensure  => directory,
+    mode    => '0700',
+    owner   => 'debian-tor',
+    group   => 'debian-tor',
+    require => User['debian-tor'],
+  }
+
+  file { '/etc/tor':
+    ensure  => directory,
+    mode    => '0755',
+    owner   => 'debian-tor',
+    group   => 'debian-tor',
+    require => User['debian-tor'],
+  }
+
+  file { '/var/lib/puppet/modules/tor':
+    ensure  => absent,
+    recurse => true,
+    force   => true,
+  }
+
+  # tor configuration file
+  concat { $tor::daemon::config_file:
+    mode   => '0600',
+    owner  => 'debian-tor',
+    group  => 'debian-tor',
+  }
+
+  # config file headers
+  concat::fragment { '00.header':
+    ensure  => present,
+    content => template('tor/torrc.header.erb'),
+    owner   => 'debian-tor',
+    group   => 'debian-tor',
+    mode    => '0644',
+    order   => 00,
+    target  => $tor::daemon::config_file,
+  }
+
+  # global configurations
+  concat::fragment { '01.global':
+    content => template('tor/torrc.global.erb'),
+    owner   => 'debian-tor',
+    group   => 'debian-tor',
+    mode    => '0644',
+    order   => 01,
+    target  => $tor::daemon::config_file,
+  }
+}
index 6cb09568168b457af745fa61bdf38fd72ca2c2a6..e970fe53c00f186c89448935ba226fb5b817903d 100644 (file)
@@ -1,7 +1,8 @@
 # map address definition
 define tor::daemon::map_address(
   $address    = '',
-  $newaddress = '') {
+  $newaddress = ''
+  $ensure     = 'present') {
 
   concat::fragment { "08.map_address.${name}":
     ensure  => $ensure,
index c620718c026b77cbf68754e9684d73fec1316330..3653c896b77af695284e22cab079e30c204847ee 100644 (file)
@@ -1,19 +1,10 @@
+# manage a basic tor installation
 class tor (
   $ensure_version = 'installed',
   $use_munin      = false
 ){
 
-  package { [ 'tor', 'tor-geoipdb' ]:
-    ensure => $ensure_version,
-  }
-
-  service { 'tor':
-    ensure     => running,
-    enable     => true,
-    hasrestart => true,
-    hasstatus  => true,
-    require    => Package['tor'],
-  }
+  include tor::base
 
   if $use_munin {
     include tor::munin
index 2f0d5c2124439785310cd88b7768a5fc4fccd303..ecc3130be640a6353cdaa8596ff44ab8a77e6a90 100644 (file)
@@ -1,3 +1,4 @@
+# munin plugins for puppet
 class tor::munin {
 
   file {
index 1201e5562f20e14c801ee6aa0dc280b406534cfc..73dc22620d7a791d46edaa2d3326670cddb7a66d 100644 (file)
@@ -1,3 +1,4 @@
+# manage the polipo proxy service
 class tor::polipo {
   include ::tor
 
index f988e55a7682832da5453a116316564c7d91d20f..df2d6ea62e6523f5c97389c95d4ca067cd4ae531 100644 (file)
@@ -1,3 +1,4 @@
+# manage polipo resources
 class tor::polipo::base {
   package{'polipo':
     ensure => present,
index db29fe687a26de14f7290fd53f54e678d91b85be..e39f6039266e99fdd270cc6a8a1ce08e2c321f62 100644 (file)
@@ -1,3 +1,4 @@
+# manage polipo on debian
 class tor::polipo::debian inherits tor::polipo::base {
   # TODO: restore file to original state after the following bug is solved:
   # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=580434
index b4c3ad6b9bed96376bda285c23d853698fae4f10..e9fc75b2059c40c7c1afa6672f0cb8a83ea60adf 100644 (file)
@@ -1,3 +1,4 @@
+# manage torsocks
 class tor::torsocks (
   $ensure_version = 'installed'
 ){