aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahnke <stahnma@puppetlabs.com>2012-10-18 20:33:09 -0700
committerMichael Stahnke <stahnma@puppetlabs.com>2012-10-18 20:34:58 -0700
commit4b8e631e3a3106eece4f8435cb18b02e9ec6253a (patch)
treeb434dfb4467509d766770bb38aa12bad15f94ff2
downloadpuppet-daap_server-4b8e631e3a3106eece4f8435cb18b02e9ec6253a.tar.gz
puppet-daap_server-4b8e631e3a3106eece4f8435cb18b02e9ec6253a.tar.bz2
Initial commit
-rw-r--r--README17
-rw-r--r--manifests/init.pp15
-rw-r--r--manifests/setup.pp33
-rw-r--r--templates/mt-daapd.conf.erb303
-rw-r--r--tests/init.pp4
5 files changed, 372 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
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
index 0000000..f34cb24
--- /dev/null
+++ b/manifests/init.pp
@@ -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
index 0000000..457a84d
--- /dev/null
+++ b/manifests/setup.pp
@@ -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
index 0000000..f0ca95a
--- /dev/null
+++ b/templates/mt-daapd.conf.erb
@@ -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
index 0000000..e6d5c78
--- /dev/null
+++ b/tests/init.pp
@@ -0,0 +1,4 @@
+class { "daap_server":
+ collection_name => 'DAAP Music Collection',
+ music_dir => '/srv/music',
+}