class ikiwiki { package { "ikiwiki": ensure => installed, } case $apache_sites_folder { '': { fail("you need to define \$apache_sites_folder for ikiwiki module") } } file { "/usr/local/sbin/ikiwiki-deploy": ensure => present, content => template('ikiwiki/deploy.sh.erb'), owner => root, group => root, mode => 755, } define instance($base_url = false, $ensure = 'present', $description = false, $adminuser = 'yourname', $adminemail = 'me@example.org', $instance = 'ikiwiki') { $desc = $decription ? { '' => $title, false => $title, default => $description, } $ikiwiki_base = $base_url ? { false => $domain, default => $base_url, } file { "/etc/ikiwiki/$name.setup": ensure => $ensure, content => template('ikiwiki/ikiwiki.setup.erb'), owner => root, group => root, mode => 644, notify => Exec["ikiwiki --setup /etc/ikiwiki/$name.setup"], } case $ensure { 'present': { exec { "ikiwiki --setup /etc/ikiwiki/$name.setup": user => www-data, refreshonly => true, } exec { "/usr/local/sbin/ikiwiki-deploy $name $instance": unless => "/bin/sh -c '[ -f ${apache_sites_folder}/${name}/${instance}_src/index.mdw ]'", user => root, } if !defined(File["${apache_sites_folder}/${name}/${instance}_src"]) { file { "${apache_sites_folder}/${name}/${instance}_src": ensure => directory, owner => www-data, group => www-data, recurse => true, notify => Exec["ikiwiki --setup /etc/ikiwiki/$name.setup"], require => File["${apache_sites_folder}/${name}"], } } if !defined(File["${apache_sites_folder}/${name}/${instance}"]) { file { "${apache_sites_folder}/${name}/${instance}": ensure => directory, owner => www-data, group => www-data, recurse => true, require => File["${apache_sites_folder}/${name}"], } } if !defined(File["${apache_sites_folder}/${name}"]) { file { "${apache_sites_folder}/${name}": ensure => directory, owner => root, group => root, } } # The post-update hook should have www-data as owner so # gitosis can do a setuid to it and write to ikiwiki # folders without messing the permission scheme. # # See http://ikiwiki.info/rcs/git/ # http://ikiwiki.info/forum/multi-user_setup_of_ikiwiki__44___gitosis_and_apache2_in_Debian_Sid/ # file { "/var/git/repositories/${name}.git/hooks/post-update": ensure => present, owner => www-data, group => gitosis, mode => 4550, } } } } }