]> gitweb.fluxo.info Git - puppet-nodo.git/commitdiff
NAS enhancements
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 14 May 2013 00:44:51 +0000 (21:44 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 14 May 2013 00:44:51 +0000 (21:44 -0300)
manifests/base/personal.pp
manifests/role/nas.pp
manifests/role/nas/desktop.pp [new file with mode: 0644]
manifests/subsystem/media.pp [new file with mode: 0644]

index adfa5ec45ca836870eb7f72b21f87507ebfc5964..4f18d85804d713d117111c9f5abdfd2635b0ea44 100644 (file)
@@ -15,7 +15,7 @@ class nodo::base::personal {
   }
 
   # Media folders and groups
-  class { [ 'nodo::subsystem::media::folders', 'nodo::subsystem::media::groups' ]: }
+  include nodo::subsystem::media
 
   # Mountpoint for encrypted home folders
   file { [ '/mnt/crypt/', '/mnt/crypt/home' ]:
index 24606150e55b9ea81666391253c2f05150454170..a18e27465df954baefdcafc3247ffe7f4684f7b3 100644 (file)
@@ -5,8 +5,36 @@ class nodo::role::nas {
   # Firewall rules
   include firewall::nas
 
+  # Media folders and groups
+  include nodo::subsystem::media
+
+  #
+  # Avahi
+  #
+  # References
+  # http://nfs-lan.sevka.info/
+  # http://en.gentoo-wiki.com/wiki/Avahi
+  # http://wiki.debian.org/ZeroConf
+  # https://wiki.archlinux.org/index.php/Avahi
+  # http://packages.debian.org/wheezy/libnss-mdns
+  # http://packages.debian.org/wheezy/mdns-scan
+  # http://packages.debian.org/wheezy/avahi-discover
+  # http://askubuntu.com/questions/19590/how-do-i-share-nfs-mounts-over-zeroconf
+  # http://sophie.zarb.org/distrib/Mandriva/current/x86_64/rpms/pure-ftpd/files/1
+  # https://github.com/stahnma/puppet-module-avahi
+  # https://github.com/tjfontaine/airprint-generate
+  # http://mryoung.soundbomb.net/index.php/apple-airprint-with-linux-avahi
+  # http://lists.freedesktop.org/archives/avahi/2006-July/000824.html
+  # http://cups.org/documentation.php/doc-1.6/ref-cupsd-conf.html#BrowseLocalProtocols
+  # http://www.dns-sd.org/ServiceTypes.html
+  include avahi
+
   # DLNA
-  class { 'minidlna': }
+  $dlna = hiera('nodo::role::nas::dlna', false);
+
+  if $dlna == true {
+    class { 'minidlna': }
+  }
 
   #
   # NFS
@@ -19,41 +47,54 @@ class nodo::role::nas {
   # http://git.puppet.immerda.ch/?p=module-nfsd.git;a=summary
   # http://wiki.debian.org/NFSServerSetup
   # http://www.tldp.org/HOWTO/NFS-HOWTO/
+  $nfs = hiera('nodo::role::nas::nfs', false);
 
-  # Main class
-  class { 'nfs':
-    server => true;
+  if $nfs == true {
+    # Main class
+    class { 'nfs':
+      server => true;
+    }
   }
 
   #
   # FTP
   #
-
   # References
   # https://forge.puppetlabs.com/tags/ftp
   # https://forum.openwrt.org/viewtopic.php?id=12976
   # http://download.pureftpd.org/pub/pure-ftpd/doc/FAQ
   # http://www.massimilianomarini.com/04/02/2012/how-follow-symbolic-links-pure-ftpd
+  $ftp = hiera('nodo::role::nas::ftp', false);
 
-  # Main class
-  class { 'pureftpd':
-    virtualchroot => true,
-  }
+  if $ftp == true {
+    # Main class
+    class { 'pureftpd':
+      virtualchroot => true,
+    }
+
+    # Enable anonymous ftp
+    file { '/etc/pure-ftpd/conf/NoAnonymous':
+      ensure  => present,
+      owner   => root,
+      group   => root,
+      mode    => 0644,
+      content => "no\n",
+      notify  => Service[$pureftpd::params::service_name],
+    }
 
-  # Enable anonymous ftp
-  file { '/etc/pure-ftpd/conf/NoAnonymous':
-    ensure  => present,
-    owner   => root,
-    group   => root,
-    mode    => 0644,
-    content => "no\n",
-    notify  => Service[$pureftpd::params::service_name],
+    file { '/etc/avahi/services/ftp.service':
+      ensure => present,
+      owner  => root,
+      group  => root,
+      mode   => 0644,
+      source => 'puppet:///modules/site_avahi/services/ftp.service',
+      notify => Service['avahi-daemon'],
+    }
   }
 
   #  
   # Samba
   #
-
   # References
   # https://github.com/ajjahn/puppet-samba
   # https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/NetworkBrowsing.html#id2583364
@@ -61,177 +102,151 @@ class nodo::role::nas {
   # http://www.linuxplanet.com/linuxplanet/tutorials/6600/2
   # http://forums.fedoraforum.org/showthread.php?t=260519
   # http://randombio.com/linuxsetup38.html
+  $samba = hiera('nodo::role::nas::samba', false);
+
+  if $samba == true {
+    # Main class
+    class { 'samba::server':
+      workgroup     => hiera('nodo::samba::workgroup',     'WORKGROUP'),
+      server_string => hiera('nodo::samba::server_string', 'Samba Server'),
+      interfaces    => hiera('nodo::samba::interfaces',    'lo eth0'),
+      security      => hiera('nodo::samba::security',      'share'),
+    }
 
-  # Main class
-  class { 'samba::server':
-    workgroup     => hiera('nodo::samba::workgroup',     'WORKGROUP'),
-    server_string => hiera('nodo::samba::server_string', 'Samba Server'),
-    interfaces    => hiera('nodo::samba::interfaces',    'lo eth0'),
-    security      => hiera('nodo::samba::security',      'share'),
-  }
+    # We are avoiding multicast
+    # http://bda.ath.cx/blog/2009/01/24/multicast-routing-upnp-traffic-with-linux/
+    # http://linux-igd.sourceforge.net/documentation.php
+    set_samba_option {
+     # Remote announce won't work since routers don't forward broadcast traffic
+     #'remote announce': value => hiera('nodo::samba::remote_announce', '');
+     'wins support':     value => 'yes';
+     'preferred master': value => 'yes';
+     'domain master':    value => 'yes';
+     'printing':         value => 'cups';
+     'printcap name':    value => 'cups';
+    }
 
-  # We are avoiding multicast
-  # http://bda.ath.cx/blog/2009/01/24/multicast-routing-upnp-traffic-with-linux/
-  # http://linux-igd.sourceforge.net/documentation.php
-  set_samba_option {
-   # Remote announce won't work since routers don't forward broadcast traffic
-   #'remote announce': value => hiera('nodo::samba::remote_announce', '');
-   'wins support':     value => 'yes';
-   'preferred master': value => 'yes';
-   'domain master':    value => 'yes';
-   'printing':         value => 'cups';
-   'printcap name':    value => 'cups';
-  }
+    # Disable browsing of printer drivers
+    samba::server::share { 'print$':
+      comment   => 'Printer Drivers',
+      path      => '/var/lib/samba/printers',
+      browsable => 'no',
+      read_only => 'yes',
+      guest_ok  => 'no',
+    }
 
-  # Disable browsing of printer drivers
-  samba::server::share { 'print$':
-    comment   => 'Printer Drivers',
-    path      => '/var/lib/samba/printers',
-    browsable => 'no',
-    read_only => 'yes',
-    guest_ok  => 'no',
+    file { '/etc/avahi/services/samba.service':
+      ensure => present,
+      owner  => root,
+      group  => root,
+      mode   => 0644,
+      source => 'puppet:///modules/site_avahi/services/samba.service',
+      notify => Service['avahi-daemon'],
+    }
   }
 
   #
   # HTTP
   #
-
   # References
   # https://github.com/camptocamp/puppet-lighttpd
   # https://github.com/example42/puppet-lighttpd
   # http://git.puppet.immerda.ch/?p=module-lighttpd.git;a=summary
+  $http = hiera('nodo::role::nas::http', false);
+
+  if $http == true {
+    # Main class
+    class { 'lighttpd': }
+
+    # Document root
+    file { '/var/www/data':
+      ensure => present,
+      owner  => root,
+      group  => root,
+      mode   => 0755,
+    }
 
-  # Main class
-  class { 'lighttpd': }
-
-  # Document root
-  file { '/var/www/data':
-    ensure => present,
-    owner  => root,
-    group  => root,
-    mode   => 0755,
+    file { '/etc/avahi/services/http.service':
+      ensure => present,
+      owner  => root,
+      group  => root,
+      mode   => 0644,
+      source => 'puppet:///modules/site_avahi/services/http.service',
+      notify => Service['avahi-daemon'],
+    }
   }
 
   #
   # TFTP
   #
+  $tftp = hiera('nodo::role::nas::tftp', false);
 
-  # Main class
-  class { 'tftp':
-    directory => '/srv/tftp',
-    address   => $::ipaddress,
-    options   => '--ipv4 --timeout 60',
-    inetd     => false,
+  if $tftp == true {
+    # Main class
+    class { 'tftp':
+      directory => '/srv/tftp',
+      address   => $::ipaddress,
+      options   => '--ipv4 --timeout 60',
+      inetd     => false,
+    }
   }
 
-  # Rsync
-  include rsync::server
-
-  # MPD
-  include mpd
-  include mpd::client
-
   #
-  # CUPS
+  # Rsync
   #
+  $rsync = hiera('nodo::role::nas::rsync', false);
 
-  # References
-  # https://github.com/mosen/puppet-cups
-  # https://github.com/camptocamp/puppet-cups
+  if $rsync == true {
+    include rsync::server
 
-  # Package
-  package { [ 'cups', 'cups-client' ]:
-    ensure => installed,
+    file { '/etc/avahi/services/rsync.service':
+      ensure => present,
+      owner  => root,
+      group  => root,
+      mode   => 0644,
+      source => 'puppet:///modules/site_avahi/services/rsync.service',
+      notify => Service['avahi-daemon'],
+    }
   }
 
   #
-  # Avahi
+  # MPD
   #
+  $mpd = hiera('nodo::role::nas::mpd', false);
 
-  # References
-  # http://nfs-lan.sevka.info/
-  # http://en.gentoo-wiki.com/wiki/Avahi
-  # http://wiki.debian.org/ZeroConf
-  # https://wiki.archlinux.org/index.php/Avahi
-  # http://packages.debian.org/wheezy/libnss-mdns
-  # http://packages.debian.org/wheezy/mdns-scan
-  # http://packages.debian.org/wheezy/avahi-discover
-  # http://askubuntu.com/questions/19590/how-do-i-share-nfs-mounts-over-zeroconf
-  # http://sophie.zarb.org/distrib/Mandriva/current/x86_64/rpms/pure-ftpd/files/1
-  # https://github.com/stahnma/puppet-module-avahi
-  # https://github.com/tjfontaine/airprint-generate
-  # http://mryoung.soundbomb.net/index.php/apple-airprint-with-linux-avahi
-  # http://lists.freedesktop.org/archives/avahi/2006-July/000824.html
-  # http://cups.org/documentation.php/doc-1.6/ref-cupsd-conf.html#BrowseLocalProtocols
-  # http://www.dns-sd.org/ServiceTypes.html
-
-  # Main class
-  include avahi
-
-  file { '/etc/avahi/services/rsync.service':
-    ensure => present,
-    owner  => root,
-    group  => root,
-    mode   => 0644,
-    source => 'puppet:///modules/site_avahi/services/rsync.service',
-    notify => Service['avahi-daemon'],
-  }
-
-  file { '/etc/avahi/services/http.service':
-    ensure => present,
-    owner  => root,
-    group  => root,
-    mode   => 0644,
-    source => 'puppet:///modules/site_avahi/services/http.service',
-    notify => Service['avahi-daemon'],
+  if $mpd == true {
+    include mpd
+    include mpd::client
   }
 
-  file { '/etc/avahi/services/samba.service':
-    ensure => present,
-    owner  => root,
-    group  => root,
-    mode   => 0644,
-    source => 'puppet:///modules/site_avahi/services/samba.service',
-    notify => Service['avahi-daemon'],
-  }
+  #
+  # CUPS
+  #
+  # References
+  # https://github.com/mosen/puppet-cups
+  # https://github.com/camptocamp/puppet-cups
+  $cups = hiera('nodo::role::nas::cups', false);
 
-  file { '/etc/avahi/services/ftp.service':
-    ensure => present,
-    owner  => root,
-    group  => root,
-    mode   => 0644,
-    source => 'puppet:///modules/site_avahi/services/ftp.service',
-    notify => Service['avahi-daemon'],
+  if $cups == true {
+    package { [ 'cups', 'cups-client' ]:
+      ensure => installed,
+    }
   }
 
   #
   # DAAP
   #
-
   # References
   # http://packages.debian.org/stable/forked-daapd
   # http://packages.debian.org/squeeze/mt-daapd
   # https://github.com/stahnma/puppet-module-daap_server
-  
-  # Main class, but package not available on wheezy
-  #class { 'daap_server':
-  #  collection_name => 'Noise - DAAP',
-  #  music_dir       => '/var/cache/media/noise',
+  #$daap = hiera('nodo::role::nas::daap', false);
+
+  #if $daap == true {
+  #  # Main class, but package not available on wheezy
+  #  class { 'daap_server':
+  #    collection_name => 'Noise - DAAP',
+  #    music_dir       => '/var/cache/media/noise',
+  #  }
   #}
-
-  #
-  # Media folders
-  #
-
-  # Main classes
-  class { [ 'nodo::subsystem::media::folders', 'nodo::subsystem::media::groups' ]: }
-  
-  # Make sure basic media exist, no matter if there is an external disk attached
-  $cache = hiera('nodo::media::folders', '')
-
-  if $cache != '' {
-    file { "${cache}":
-      ensure => directory,
-    }
-  }
 }
diff --git a/manifests/role/nas/desktop.pp b/manifests/role/nas/desktop.pp
new file mode 100644 (file)
index 0000000..5a14599
--- /dev/null
@@ -0,0 +1,4 @@
+# A desktop action as a NAS
+class nodo::role::nas::desktop inherits nodo::base::desktop {
+  include nodo::role::nas
+}
diff --git a/manifests/subsystem/media.pp b/manifests/subsystem/media.pp
new file mode 100644 (file)
index 0000000..b67ddbd
--- /dev/null
@@ -0,0 +1,13 @@
+class nodo::subsystem::media {
+  # Main classes
+  class { [ 'nodo::subsystem::media::folders', 'nodo::subsystem::media::groups' ]: }
+  
+  # Make sure basic media exist, no matter if there is an external disk attached
+  $cache = hiera('nodo::media::folders', '')
+
+  if $cache != '' {
+    file { "${cache}":
+      ensure => directory,
+    }
+  }
+}