]> gitweb.fluxo.info Git - puppet-daap_server.git/commitdiff
Initial commit
authorMichael Stahnke <stahnma@puppetlabs.com>
Fri, 19 Oct 2012 03:33:09 +0000 (20:33 -0700)
committerMichael Stahnke <stahnma@puppetlabs.com>
Fri, 19 Oct 2012 03:34:58 +0000 (20:34 -0700)
README [new file with mode: 0644]
manifests/init.pp [new file with mode: 0644]
manifests/setup.pp [new file with mode: 0644]
templates/mt-daapd.conf.erb [new file with mode: 0644]
tests/init.pp [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..181fc0a
--- /dev/null
+++ b/README
@@ -0,0 +1,17 @@
+# Readme file for mt-daapd module
+
+daap_server - A DAAP server that exports your music collection via the Digital Audio Access Protocol as made famous by Apple iTunes.
+
+
+This puppet module should basically do just a few things.
+
+1.  Install mt-daapd
+2.  Deliver a configuration file in /etc/mt-daapd.conf
+3.  Enable the daemon for startup
+4.  Startup the daemon
+
+
+
+
+Also, you may need to open port 3689 (udp and tcp) in your firewall.  I haven't added that to this module yet.
+
diff --git a/manifests/init.pp b/manifests/init.pp
new file mode 100644 (file)
index 0000000..f34cb24
--- /dev/null
@@ -0,0 +1,15 @@
+#IPTABLES RULES
+#   /sbin/iptables -I INPUT -p tcp --dport 3689 -j ACCEPT
+#   /sbin/iptables -I INPUT -p udp --dport 3689 -j ACCEPT
+#   Firewall fixup
+
+class daap_server($collection_name = 'DAAP Music', $music_dir = '/srv/music' ) {
+  if $::osfamily == 'RedHat' {
+    class  { 'daap_server::setup':
+       music_dir       => $music_dir,
+       collection_name => $collection_name,
+    }
+  } else {
+    notice("Your operating system $::operatingsystem is not supported with this module (daap_server)")
+  }
+}
diff --git a/manifests/setup.pp b/manifests/setup.pp
new file mode 100644 (file)
index 0000000..457a84d
--- /dev/null
@@ -0,0 +1,33 @@
+# Puppet manifest for setting up my mt-daapd server
+class daap_server::setup($music_dir = '/srv/music', $collection_name = 'Secondary DAAP Server')  {
+   include 'avahi'
+
+   package { 'mt-daapd':
+     ensure => latest,
+     require => Service['avahi_dbus'],
+   }
+
+   file { '/etc/mt-daapd.conf':
+     ensure  => present,
+     content => template('daap_server/mt-daapd.conf.erb'),
+     owner   => 'root',
+     mode    => '640',
+     require => Package['mt-daapd'],
+     notify  => Service['mt-daapd']
+   }
+
+   service { 'mt-daapd':
+     ensure     => running,
+     enable     => true,
+     hasrestart => true,
+     require    => [ File['/etc/mt-daapd.conf'], Package['mt-daapd'], Exec["mkdir $music_dir"] ]
+   }
+
+  exec { "mkdir $music_dir":
+     path    => [ '/usr/bin', '/bin' ],
+     command => "mkdir -p $music_dir",
+     unless  => "[ -d $music_dir ]",
+     notify  => Service['mt-daapd'],
+     require => Service['avahi_dbus']
+  }
+}
diff --git a/templates/mt-daapd.conf.erb b/templates/mt-daapd.conf.erb
new file mode 100644 (file)
index 0000000..f0ca95a
--- /dev/null
@@ -0,0 +1,303 @@
+# $Id: mt-daapd.conf 454 2004-12-29 06:20:26Z rpedde $
+#
+# This is the mt-daapd config file.
+#
+# If you have problems or questions with the format of this file,
+# direct your questions to rpedde@users.sourceforge.net.
+#
+# You can also check the website at http://mt-daapd.sourceforge.net,
+# as there is a growing documentation library there, peer-supported
+# forums and possibly more.
+#
+
+#
+# web_root (required)
+#
+# Location of the admin web pages.
+#
+# If you installed from .RPM, .deb, or tarball with --prefix=/usr, then
+# this is correct.
+#
+# If you installed from tarball without --prefix=/usr, then the correct
+# path is probably /usr/local/share/mt-daapd/admin-root.
+#
+
+<% if has_variable?("web_root") then -%>
+web_root <%= web_root %>
+<% else -%>
+web_root    /usr/share/mt-daapd/admin-root
+<% end -%>
+
+#
+# port (required)
+#
+# What port to listen on.  It is possible to use a different
+# port, but this is the default iTunes port
+#
+
+<% if has_variable?("port") then -%>
+port <%= port %>
+<% else -%>
+port        3689
+<% end -%>
+
+#
+# admin_pw (required)
+#
+# This is the password to the administrative pages
+#
+#
+<% if has_variable?("admin_pw") then -%>
+admin_pw <%= admin_pw %>
+<% else -%>
+admin_pw       mt-daapd
+<% end -%>
+
+
+#
+# db_dir (required)
+#
+# This is where mt-daapd stores its database of song information.
+#
+# If you installed from .RPM or .deb, then this directory already
+# exists.  If not, then YOU MUST CREATE THIS DIRECTORY!
+#
+
+<% if has_variable?("db_dir") then -%>
+db_dir <%= db_dir %>
+<% else -%>
+db_dir      /var/cache/mt-daapd
+<% end -%>
+
+#
+# mp3_dir (required)
+#
+# Location of the mp3 files to share.  Note that because the
+# files are stored in the database by inode, these must be
+# in the same physical filesystem.
+#
+
+mp3_dir <%= @music_dir %>
+
+#
+# servername (required)
+#
+# This is both the name of the server as advertised
+# via rendezvous, and the name of the database
+# exported via DAAP.  Also know as "What shows up in iTunes".
+#
+servername   <%= @collection_name  %>
+
+#
+# runas (required)
+#
+# This is the user to drop privs to if running as
+# root.  If mt-daapd is not started as root, this
+# configuration option is ignored.  Notice that this
+# must be specified whether the server is running
+# as root or not.
+#
+
+<% if has_variable?("runas") then -%>
+runas <%= runas %>
+<% else -%>
+runas   mt-daapd
+<% end -%>
+
+#
+# playlist (optional)
+#
+# This is the location of a playlist file.
+# This is for Apple-style "Smart Playlists"
+# See the mt-daapd.playlist file in the
+# contrib directory for syntax and examples
+#
+# This doesn't control static playlists... these
+# are controlled with the "process_m3u" directive
+# below.
+#
+
+<% if has_variable?("playlist") then -%>
+playlist <%= playlist %>
+<% else -%>
+playlist    /etc/mt-daapd.playlist
+<% end -%>
+
+#
+# password (optional)
+#
+# This is the password required to listen to MP3 files
+# i.e. the password that iTunes prompts for
+#
+
+
+<% if has_variable?("password") then -%>
+password <%= password %>
+<% else -%>
+#password   mp3
+<% end -%>
+
+#
+# extensions (optional)
+#
+# These are the file extensions that the daap server will
+# try to index and serve.  By default, it only indexes and
+# serves .mp3 files.  It can also server .m4a and .m4p files,
+# and just about any other files, really.  Unfortunately, while
+# it can *attempt* to serve other files (.ogg?), iTunes won't
+# play them.  Perhaps this would be useful on Linux with
+# Rhythmbox, once it understands daap.  (hurry up!)
+#
+#
+
+<% if has_variable?("extensions") then -%>
+extensions <%= extensions %>
+<% else -%>
+extensions .mp3,.m4a,.m4p,.ogg,.flac
+<% end -%>
+
+#
+# logfile (optional)
+#
+# This is the file to log to.  If this is not configured,
+# then it will log to the syslog.
+#
+# Not that the -d <level> switch will control the log verbosity.
+# By default, it runs at log level 1.  Log level 9 will churn
+# out scads of useless debugging information.  Values in between
+# will vary the amount of logging you get.
+#
+
+<% if has_variable?("logfile") then -%>
+logfile <%= logfile %>
+<% else -%>
+logfile /var/log/mt-daapd.log
+<% end -%>
+
+#
+# art_filename (optional)
+#
+# There is experimental support thanks to Hiren Joshi
+# (hirenj@mooh.org) for dynamically adding art to the id3v2
+# header as it is streamed (!!).  If you were using a music system
+# like zina or andromeda, for example, with cover art called
+# "_folderOpenImage.jpg", you could use the parameter
+# art_file _folderOpenImage.jpg and if the file _folderOpenImage.jpg
+# was located in the same folder as the .mp3 file, it would appear
+# in iTunes.  Cool, eh?
+#
+
+<% if has_variable?("art_filename") then -%>
+art_filename <%= art_filename %>
+<% else -%>
+#art_filename _folderOpenImage.jpg
+<% end -%>
+
+#
+# rescan_interval
+#
+# How often to check the file system to see if any mp3 files
+# have been added or removed.
+#
+# if not specified, the default is 0, which disables background scanning.
+#
+# If background rescanning is disabled, a scan can still be forced from the
+# "status" page of the administrative web interface
+#
+# Setting a rescan_interval lower than the time it takes to rescan
+# won't hurt anything, it will just waste CPU, and make connect times
+# to the daap server longer.
+#
+#
+
+<% if has_variable?("rescan_interval") then -%>
+rescan_interval <%= rescan_interval %>
+<% else -%>
+#rescan_interval       300
+<% end -%>
+
+# always_scan
+#
+# The default behavior is not not do background rescans of the
+# filesystem unless there are clients connected.  The thought is to
+# allow the drives to spin down unless they are in use.  This might be
+# of more importance in IDE drives that aren't designed to be run
+# 24x7.  Forcing a scan through the web interface will always work
+# though, even if no users are connected.
+
+<% if has_variable?("always_scan") then -%>
+always_scan <%= always_scan %>
+<% else -%>
+# always_scan 0
+<% end -%>
+
+#
+# process_m3u
+#
+# By default m3u processing is turned off, since most m3u files
+# sitting around in peoples mp3 directories have bad paths, and
+# I hear about it.  :)
+#
+# If you are sure your m3u files have good paths (i.e. unixly pathed,
+# with relative paths relative to the directory the m3u is in), then
+# you can turn on m3u processing by setting this directive to 1.
+#
+# I'm not sure "unixly" is a word, but you get the idea.
+#
+
+<% if has_variable?("process_m3u") then -%>
+process_m3u <%= process_m3u %>
+<% else -%>
+# process_m3u 0
+<% end -%>
+
+#
+# scan_type
+#
+#
+# This sets how aggressively mp3 files should be scanned to determine
+# file length.  There are three values:
+#
+# 0 (Normal)
+#   Just scan the first mp3 frame to try and calculate size.  This will
+#   be accurate for most files, but VBR files without an Xing tag will
+#   probably have wildly inaccurate file times.  This is the default.
+#
+# 1 (Aggressive)
+#   This checks the bitrates of 10 frames in the middle of the song.
+#   This will still be inaccurate for VBR files without an Xing tag,
+#   but they probably won't be quite as inaccurate as 0.  This takes
+#   more time, obviously, although the time hit will only happen the
+#   first time you scan a particular file.
+#
+# 2 (Painfully aggressive)
+#   This walks through the entire song, counting the number of frames.
+#   This should result in accurate song times, but will take the most
+#   time.  Again, this will only have to be incurred the first time
+#   the file is indexed.
+#
+
+<% if has_variable?("scan_type") then -%>
+scan_type <%= scan_type %>
+<% else -%>
+# scan_type  0
+<% end -%>
+
+#
+# compress
+#
+# Whether to use gzip content-encoding when transferring playlists etc.
+# This was contributed as a patch by Ciamac Moallemi just prior to the 0.2.1
+# release, and as such, hasn't gotten as much testing as other features.
+#
+# This feature should substantially speed up transfers of large databases
+# and playlists.
+#
+# It will eventually default to 1, but currently it defaults to 0.
+#
+
+<% if has_variable?("compress") then -%>
+compress <%= compress %>
+<% else -%>
+# compress 0
+<% end -%>
diff --git a/tests/init.pp b/tests/init.pp
new file mode 100644 (file)
index 0000000..e6d5c78
--- /dev/null
@@ -0,0 +1,4 @@
+class { "daap_server":
+  collection_name => 'DAAP Music Collection',
+  music_dir       => '/srv/music',
+}