From fc6433630e29e2d4ea940324c71a78e12d0def3c Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 19 Jan 2013 16:05:49 -0200 Subject: Upgrading for 2.7 compatibility --- manifests/init.pp | 89 ++------------------------------------------- manifests/instance.pp | 81 +++++++++++++++++++++++++++++++++++++++++ templates/deploy.sh.erb | 2 +- templates/ikiwiki.setup.erb | 6 +-- templates/refresh.sh.erb | 2 +- 5 files changed, 89 insertions(+), 91 deletions(-) create mode 100644 manifests/instance.pp diff --git a/manifests/init.pp b/manifests/init.pp index e3972bd..061ee2e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,12 +1,10 @@ -class ikiwiki { +class ikiwiki( + $sites_folder = ${apache::sites_folder) +) { package { [ "ikiwiki", "po4a" ]: 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'), @@ -23,85 +21,4 @@ class ikiwiki { mode => 755, } - define instance($base_url = $domain, $ensure = 'present', $description = false, - $adminuser = 'yourname', $adminemail = 'me@example.org', $instance = 'ikiwiki', - $account_creation_password = false, $add_plugins = false, $disable_plugins = false, - $protocol = 'https') { - - $desc = $description ? { - false => $title, - default => $description, - } - - case $ensure { - 'present': { - file { "/etc/ikiwiki/$name.setup": - ensure => present, - content => template('ikiwiki/ikiwiki.setup.erb'), - owner => www-data, - group => www-data, - mode => 640, - notify => Exec["ikiwiki_refresh_${name}"], - } - - exec { "ikiwiki_refresh_${name}": - command => "/usr/local/sbin/ikiwiki-refresh $name $instance", - user => root, - refreshonly => true, - } - - 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_refresh_${name}"], - 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 - # gitolite can do a setuid to it and write to ikiwiki - # folders without messing the permission scheme. - # - # The same is valid for the cgi. - # - # See http://ikiwiki.info/rcs/git/ - # http://ikiwiki.info/forum/multi-user_setup_of_ikiwiki__44___gitolite_and_apache2_in_Debian_Sid/ - # - file { [ "/var/git/repositories/${name}.git/hooks/post-update", - "${apache_sites_folder}/${name}/${instance}/ikiwiki.cgi" ]: - ensure => present, - owner => www-data, - group => gitolite, - mode => 6550, - require => File["/etc/ikiwiki/$name.setup"], - } - } - 'absent': { - file { "/etc/ikiwiki/$name.setup": - ensure => absent, - } - } - } - } } diff --git a/manifests/instance.pp b/manifests/instance.pp new file mode 100644 index 0000000..3c76365 --- /dev/null +++ b/manifests/instance.pp @@ -0,0 +1,81 @@ +define ikiwiki::instance($base_url = $domain, $ensure = 'present', $description = false, + $adminuser = 'yourname', $adminemail = 'me@example.org', $instance = 'ikiwiki', + $account_creation_password = false, $add_plugins = false, $disable_plugins = false, + $protocol = 'https') { + + $desc = $description ? { + false => $title, + default => $description, + } + + case $ensure { + 'present': { + file { "/etc/ikiwiki/$name.setup": + ensure => present, + content => template('ikiwiki/ikiwiki.setup.erb'), + owner => www-data, + group => www-data, + mode => 640, + notify => Exec["ikiwiki_refresh_${name}"], + } + + exec { "ikiwiki_refresh_${name}": + command => "/usr/local/sbin/ikiwiki-refresh $name $instance", + user => root, + refreshonly => true, + } + + if !defined(File["${ikiwiki::sites_folder}/${name}/${instance}_src"]) { + file { "${ikiwiki::sites_folder}/${name}/${instance}_src": + ensure => directory, + owner => www-data, + group => www-data, + recurse => true, + notify => Exec["ikiwiki_refresh_${name}"], + require => File["${ikiwiki::sites_folder}/${name}"], + } + } + + if !defined(File["${ikiwiki::sites_folder}/${name}/${instance}"]) { + file { "${ikiwiki::sites_folder}/${name}/${instance}": + ensure => directory, + owner => www-data, + group => www-data, + recurse => true, + require => File["${ikiwiki::sites_folder}/${name}"], + } + } + + if !defined(File["${ikiwiki::sites_folder}/${name}"]) { + file { "${ikiwiki::sites_folder}/${name}": + ensure => directory, + owner => root, + group => root, + } + } + + # The post-update hook should have www-data as owner so + # gitolite can do a setuid to it and write to ikiwiki + # folders without messing the permission scheme. + # + # The same is valid for the cgi. + # + # See http://ikiwiki.info/rcs/git/ + # http://ikiwiki.info/forum/multi-user_setup_of_ikiwiki__44___gitolite_and_apache2_in_Debian_Sid/ + # + file { [ "/var/git/repositories/${name}.git/hooks/post-update", + "${ikiwiki::sites_folder}/${name}/${instance}/ikiwiki.cgi" ]: + ensure => present, + owner => www-data, + group => gitolite, + mode => 6550, + require => File["/etc/ikiwiki/$name.setup"], + } + } + 'absent': { + file { "/etc/ikiwiki/$name.setup": + ensure => absent, + } + } + } +} diff --git a/templates/deploy.sh.erb b/templates/deploy.sh.erb index e5bfa92..4bbfb43 100644 --- a/templates/deploy.sh.erb +++ b/templates/deploy.sh.erb @@ -2,7 +2,7 @@ NAME="$1" INSTANCE="$2" -BASE="<%= apache_sites_folder %>" +BASE="<%= scope.lookupvar('ikiwiki::sites_folder') %>" SITE=$BASE/$NAME CONF="/etc/ikiwiki" WEB_OWNER="www-data" diff --git a/templates/ikiwiki.setup.erb b/templates/ikiwiki.setup.erb index 56d5ad2..1c90988 100644 --- a/templates/ikiwiki.setup.erb +++ b/templates/ikiwiki.setup.erb @@ -11,8 +11,8 @@ use IkiWiki::Setup::Standard { adminemail => '<%= adminemail %>', # Be sure to customise these.. - srcdir => "<%= apache_sites_folder %>/<%= name %>/ikiwiki_src", - destdir => "<%= apache_sites_folder %>/<%= name %>/ikiwiki", + srcdir => "<%= scope.lookupvar('ikiwiki::sites_folder') %>/<%= name %>/ikiwiki_src", + destdir => "<%= scope.lookupvar('ikiwiki::sites_folder') %>/<%= name %>/ikiwiki", url => "<%= protocol %>://<%= name %>.<%= base_url %>", cgiurl => "<%= protocol %>://<%= name %>.<%= base_url %>/ikiwiki.cgi", @@ -63,7 +63,7 @@ use IkiWiki::Setup::Standard { { # The cgi wrapper. cgi => 1, - wrapper => "<%= apache_sites_folder %>/<%= name %>/ikiwiki/ikiwiki.cgi", + wrapper => "<%= scope.lookupvar('ikiwiki::sites_folder') %>/<%= name %>/ikiwiki/ikiwiki.cgi", wrappermode => "06550", wrappergroup => "gitosis", }, diff --git a/templates/refresh.sh.erb b/templates/refresh.sh.erb index 6680f23..0b2b796 100644 --- a/templates/refresh.sh.erb +++ b/templates/refresh.sh.erb @@ -2,7 +2,7 @@ NAME="$1" INSTANCE="$2" -BASE="<%= apache_sites_folder %>" +BASE="<%= scope.lookupvar('ikiwiki::sites_folder') %>" SITE=$BASE/$NAME CONF="/etc/ikiwiki" WEB_OWNER="www-data" -- cgit v1.2.3