}
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
--- /dev/null
+# 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'],
+ }
+}
+# manage a complete tor
+# installation with all the basics
class tor::compact {
include ::tor
include tor::polipo
+# 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
}
--- /dev/null
+# 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,
+ }
+}
# map address definition
define tor::daemon::map_address(
$address = '',
- $newaddress = '') {
+ $newaddress = ''
+ $ensure = 'present') {
concat::fragment { "08.map_address.${name}":
ensure => $ensure,
+# 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
+# munin plugins for puppet
class tor::munin {
file {
+# manage the polipo proxy service
class tor::polipo {
include ::tor
+# manage polipo resources
class tor::polipo::base {
package{'polipo':
ensure => present,
+# 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
+# manage torsocks
class tor::torsocks (
$ensure_version = 'installed'
){