define tracsite($cgidir, $tracdir) { file { "trac-$name": path => "/etc/apache2/trac/$name.conf", owner => root, group => root, mode => 644, require => file[apacheconf], content => template("tracsite.erb"), notify => service[apache2] } symlink { "tracsym-$name": path => "$cgidir/$name.cgi", ensure => "/usr/share/trac/cgi-bin/trac.cgi" } } define tracinstance( $basedir = "/export/svn/trac", $repository = false, $templates = "/usr/share/trac/templates", $cgipath = false, $cc = "luke@madstop.com", $description, $db = "sqlite:db/trac.db", $owner = "www-data", $group = "www-data", $url = "https://reductivelabs.com", $repobase = "/export/svn/repos", $cgidir = "/export/docroots/reductivelabs.com/cgi-bin", $replyto = "trac@$domain", $from = "trac@$domain", $logo = "/images/traclogo.png", $alt = $domain, $smtpserver = "mail.$domain" ) { $repo = $repository ? { false => "$repobase/$name", default => $repository } $cgi = $cgipath ? { false => "$url/cgi-bin/$name.cgi", default => $cgipath } $tracdir = "$basedir/$name" $config = "$tracdir/conf/trac.ini" exec { "tracinit-$name": command => "trac-admin $tracdir initenv $name $db $repo $templates", path => "/usr/bin:/bin:/usr/sbin", logoutput => false, creates => $config } file { $tracdir: owner => $owner, group => $group, recurse => true, require => exec["tracinit-$name"] } file { $config: owner => $owner, group => $group, content => template("tracconfig.erb") } tracsite { $name: tracdir => $tracdir, cgidir => $cgidir } }