From a9e94c261c5d76454a5d8b037c002baf6efbedfc Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Wed, 6 Jan 2010 22:37:49 -0200 Subject: Adding ikiwiki::instance --- manifests/init.pp | 39 +++++++++ templates/deploy.sh.erb | 29 +++++++ templates/ikiwiki.setup.erb | 203 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 271 insertions(+) create mode 100644 templates/deploy.sh.erb create mode 100644 templates/ikiwiki.setup.erb 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` " +fi + +if [ ! -e "$CONF/$NAME" ]; then + echo "No config file for $NAME" +fi + +echo > $SITE/ikiwiki_src/index.mdw < "<%= 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&r1=[[r1]]&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 -", +} -- cgit v1.2.3