diff options
author | Michael Stahnke <stahnma@puppetlabs.com> | 2012-10-18 20:33:09 -0700 |
---|---|---|
committer | Michael Stahnke <stahnma@puppetlabs.com> | 2012-10-18 20:34:58 -0700 |
commit | 4b8e631e3a3106eece4f8435cb18b02e9ec6253a (patch) | |
tree | b434dfb4467509d766770bb38aa12bad15f94ff2 | |
download | puppet-daap_server-4b8e631e3a3106eece4f8435cb18b02e9ec6253a.tar.gz puppet-daap_server-4b8e631e3a3106eece4f8435cb18b02e9ec6253a.tar.bz2 |
Initial commit
-rw-r--r-- | README | 17 | ||||
-rw-r--r-- | manifests/init.pp | 15 | ||||
-rw-r--r-- | manifests/setup.pp | 33 | ||||
-rw-r--r-- | templates/mt-daapd.conf.erb | 303 | ||||
-rw-r--r-- | tests/init.pp | 4 |
5 files changed, 372 insertions, 0 deletions
@@ -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', +} |