aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2010-01-06 22:37:49 -0200
committerSilvio Rhatto <rhatto@riseup.net>2010-01-06 22:37:49 -0200
commita9e94c261c5d76454a5d8b037c002baf6efbedfc (patch)
treee896730f057439e9dc623aaca35ca04cfcc92fc8
parentbc59ef1fb7cf67c5451cae0c83ef187af86c9900 (diff)
downloadpuppet-ikiwiki-a9e94c261c5d76454a5d8b037c002baf6efbedfc.tar.gz
puppet-ikiwiki-a9e94c261c5d76454a5d8b037c002baf6efbedfc.tar.bz2
Adding ikiwiki::instance
-rw-r--r--manifests/init.pp39
-rw-r--r--templates/deploy.sh.erb29
-rw-r--r--templates/ikiwiki.setup.erb203
3 files changed, 271 insertions, 0 deletions
diff --git a/manifests/init.pp b/manifests/init.pp
index bc83789..c4b58d2 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -2,4 +2,43 @@ class ikiwiki {
package { "ikiwiki":
ensure => installed,
}
+
+ case $apache_sites_folder {
+ '': { fail("you need to define \$apache_sites_folder for drupal module") }
+ }
+
+ file { "/usr/local/sbin/ikiwiki-deploy":
+ ensure => present,
+ content => template('ikiwiki/deploy.sh.erb'),
+ owner => root,
+ group => root,
+ mode => 755,
+ }
+
+ define instance() {
+ file { "/etc/ikiwiki/$name.setup":
+ ensure => present,
+ content => template('ikiwiki/ikiwiki.setup.erb'),
+ owner => root,
+ group => root,
+ mode => 644,
+ }
+
+ exec { "ikiwiki --setup /etc/ikiwiki/$name.setup":
+ user => gitosis,
+ refreshonly => true,
+ }
+
+ exec { "/usr/local/sbin/ikiwiki-deploy $name":
+ unless => "/bin/sh -c [ -f '${apache_sites_folder}/${name}_src/index.mdw' ]",
+ }
+
+ file { [ "${apache_sites_folder}/${name}_src", "${apache_sites_folder}/${name}" ]:
+ ensure => directory,
+ owner => gitosis,
+ group => gitosis,
+ recurse => true,
+ notify => Exec["ikiwiki --setup /etc/ikiwiki/$name.setup"],
+ }
+ }
}
diff --git a/templates/deploy.sh.erb b/templates/deploy.sh.erb
new file mode 100644
index 0000000..e98b57c
--- /dev/null
+++ b/templates/deploy.sh.erb
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+NAME="$1"
+BASE="<%= apache_sites_folder %>"
+SITE=$BASE/$NAME
+CONF="/etc/ikiwiki"
+
+if [ -z "$NAME" ]; then
+ echo "Usage:`basename $0` <site>"
+fi
+
+if [ ! -e "$CONF/$NAME" ]; then
+ echo "No config file for $NAME"
+fi
+
+echo > $SITE/ikiwiki_src/index.mdw <<EOF
+Welcome to your new wiki.
+
+All wikis are supposed to have a [[SandBox]], so this one does too.
+
+----
+
+This wiki is powered by [ikiwiki](http://ikiwiki.info).
+EOF
+
+ikiwiki-makerepo git $SITE/ikiwiki_src/ /var/git/repositories/$NAME.git
+touch /var/git/repositories/$NAME.git/git-daemon-export-ok
+( cd /var/git/repositories/$NAME.git && git --bare update-server-info )
+ikiwiki --setup /etc/ikiwiki/$NAME.setup
diff --git a/templates/ikiwiki.setup.erb b/templates/ikiwiki.setup.erb
new file mode 100644
index 0000000..927e760
--- /dev/null
+++ b/templates/ikiwiki.setup.erb
@@ -0,0 +1,203 @@
+#!/usr/bin/perl
+# Configuration file for ikiwiki.
+# Passing this to ikiwiki --setup will make ikiwiki generate wrappers and
+# build the wiki.
+#
+# Remember to re-run ikiwiki --setup any time you edit this file.
+
+use IkiWiki::Setup::Standard {
+ wikiname => "<%= name %>",
+ #adminuser => ["yourname", ],
+ adminemail => 'me@example.org',
+
+ # Be sure to customise these..
+ srcdir => "<%= apache_sites_folder %>/<%= name %>/ikiwiki_src",
+ destdir => "<%= apache_sites_folder %>/<%= name %>/ikiwiki",
+
+ url => "http://example.org/wiki",
+ cgiurl => "http://example.org/wiki/ikiwiki.cgi",
+ #templatedir => "/usr/share/ikiwiki/templates",
+ #underlaydir => "/usr/share/ikiwiki/basewiki",
+
+ # Subversion stuff.
+ #rcs => "svn",
+ #historyurl => "http://svn.example.org/trunk/[[file]]",
+ #diffurl => "http://svn.example.org/trunk/[[file]]?root=wiki&amp;r1=[[r1]]&amp;r2=[[r2]]",
+ #svnrepo => "/svn/wiki",
+ #svnpath => "trunk",
+
+ # Git stuff.
+ rcs => "git",
+ historyurl => "http://git.<%= domain %>/gitweb.cgi?p=<%= name %>.git;a=history;f=[[file]]",
+ diffurl => "http://git.<%= domain %>/gitweb.cgi?p=<%= name %>.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]",
+ #gitorigin_branch => "origin",
+ #gitmaster_branch => "master",
+
+ # Tla stuff.
+ #rcs => "tla"
+ #historyurl => ??,
+ #diffurl => ??,
+
+ # Mercurial stuff.
+ #rcs => "mercurial",
+ #historyurl => "http://localhost:8000/log/tip/[[file]]", # hg serve'd local repository
+ #diffurl => "http://localhost:8000/?fd=[[r2]];file=[[file]]",
+
+ # Bazaar stuff.
+ #rcs => "bzr",
+ #historyurl => "",
+ #diffurl => "http://example.com/revision?start_revid=[[r2]]#[[file]]-s", # using loggerhead
+
+ # Monotone stuff
+ #rcs => "monotone",
+ #mtnkey => "web\@machine.company.com",
+ #historyurl => "http://viewmtn.example.com/branch/head/filechanges/com.example.branch/[[file]]",
+ #diffurl => "http://viewmtn.example.com/revision/diff/[[r1]]/with/[[r2]]/[[file]]",
+ # Set if you want the wiki to sync on update and commit.
+ #mtnsync => 0,
+ # The path to your workspace (defaults to the srcdir itself)
+ # e.g. use if your srcdir is a subdirectory of the workspace.
+ #mtnrootdir => "path/to/root/of/workspace",
+
+ wrappers => [
+ {
+ # The cgi wrapper.
+ cgi => 1,
+ wrapper => "<%= apache_sites_folder %>/<%= name %>/ikiwiki/ikiwiki.cgi",
+ wrappermode => "06755",
+ },
+ #{
+ # # The svn post-commit wrapper.
+ # # Note that this will overwrite any existing
+ # # post-commit hook script, which may not be
+ # # what you want.
+ # wrapper => "/svn/wikirepo/hooks/post-commit",
+ # wrappermode => "04755",
+ # # Log to syslog since svn post-commit hooks
+ # # hide output and errors.
+ # syslog => 1,
+ #},
+ {
+ # The git post-update wrapper.
+ # Note that this will overwrite any existing
+ # post-update hook script, which may not be
+ # what you want.
+ wrapper => "/var/git/repositories/<%= name %>.git/hooks/post-update",
+ wrappermode => "06755",
+ },
+ #{
+ # # The monotone netsync hook.
+ # wrapper => "path/to/root/of/workspace/_MTN/ikiwiki-netsync-hook",
+ # wrappermode => "06755",
+ #},
+ ],
+
+ # Default to generating rss feeds for pages with feeds?
+ #rss => 1,
+ # Default to generating atom feeds for pages with feeds?
+ #atom => 1,
+ # Allow generating feeds even if not generated by default?
+ #allowrss => 1,
+ #allowatom => 1,
+ # Urls to ping with XML-RPC when feeds are updated
+ #pingurl => [qw{http://rpc.technorati.com/rpc/ping}],
+ # Include discussion links on all pages?
+ discussion => 1,
+ # To exclude files matching a regexp from processing. This adds to
+ # the default exclude list.
+ #exclude => qr/\.wav$/,
+ # To change the extension used for generated html files.
+ #htmlext => 'htm',
+ # Time format (for strftime)
+ #timeformat => '%c',
+ # Locale to use. Must be a UTF-8 locale.
+ #locale => 'en_US.UTF-8',
+ # Only send cookies over SSL connections.
+ #sslcookie => 1,
+ # Logging settings:
+ #verbose => 1,
+ syslog => 0,
+ # To link to user pages in a subdirectory of the wiki.
+ #userdir => "users",
+ # To create output files named page.html rather than page/index.html.
+ #usedirs => 0,
+ # Simple spam prevention: require an account-creation password.
+ #account_creation_password => "example",
+ # Cost of generating a password using Authen::Passphrase::BlowfishCrypt
+ #password_cost => 8,
+ # Uncomment to force ikiwiki to run with a particular umask.
+ #umask => 022,
+ # Default settings for the recentchanges page.
+ #recentchangespage => "recentchanges",
+ #recentchangesnum => 100,
+ # Use new '!'-prefixed preprocessor directive syntax
+ #prefix_directives => 0,
+ # Attempt to make hardlinks to source files instead of copying them.
+ # Useful if the wiki contains large media files.
+ #hardlink => 1,
+ # Enable use of multimarkdown features in .mdwn files.
+ #multimarkdown => 1,
+
+ # To add plugins, list them here.
+ #add_plugins => [qw{goodstuff search wikitext camelcase
+ # htmltidy fortune sidebar map rst anonok}],
+ # If you want to disable any of the default plugins, list them here.
+ #disable_plugins => [qw{inline htmlscrubber passwordauth openid}],
+ disable_plugins => [qw{openid}],
+ # To add a directory to the perl search path, use this.
+ #libdir => "/home/me/.ikiwiki/",
+
+ # To override environment variable settings, you can list values here.
+ #ENV => {
+ # TZ => "America/New_York",
+ # PATH => "/home/me/bin:/usr/local/bin:/usr/bin:/bin",
+ #},
+
+ # For use with the tag plugin, make all tags be located under a
+ # base page.
+ #tagbase => "tag",
+
+ # For use with the search plugin if the omega cgi is located
+ # somewhere else.
+ #omega_cgi => "/usr/lib/cgi-bin/omega/omega",
+
+ # For use with the openid plugin, to give an url to a page users
+ # can use to signup for an OpenID.
+ #openidsignup => "http://myopenid.com/",
+
+ # For use with the mirrorlist plugin, a list of mirrors.
+ #mirrorlist => {
+ # mirror1 => "http://hostname1",
+ # mirror2 => "http://hostname2/mirror",
+ #},
+
+ # For use with the anonok plugin, a PageSpec specifying what
+ # pages anonymous users can edit
+ #anonok_pagespec => "*",
+
+ # For use with the aggregate plugin, to allow aggregation to be
+ # triggered via the web.
+ #aggregate_webtrigger => 1,
+
+ # For use with the pinger plugin, how many seconds to wait before
+ # timing out.
+ #pinger_timeout => 15.
+
+ # For use with the amazon S3 plugin, your public access key id.
+ #amazon_s3_key_id => 'XXXXXXXXXXXXXXXXXXXX',
+ # And a file holding your secret key. This file *must* not be
+ # readable by others!
+ #amazon_s3_key_file => "/home/me/.hide/.s3_key
+ # The globally unique name of the bucket to use to store the wiki.
+ #amazon_s3_bucket => "mywiki",
+ # A prefix to prepend to each page name.
+ #amazon_s3_prefix => "wiki/",
+ # Uncomment to use the S3 European datacenter.
+ #amazon_s3_location => "EU",
+ # Uncomment if you need to store each index file twice.
+ #amazon_s3_dupindex => 1,
+
+ # For use with the attachment plugin, a program that returns
+ # nonzero if its standard input contains an virus.
+ #virus_checker => "clamdscan -",
+}