Initial commit
This commit is contained in:
8
.fixtures.yml
Normal file
8
.fixtures.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
fixtures:
|
||||||
|
symlinks:
|
||||||
|
dokuwiki: "#{source_dir}"
|
||||||
|
repositories:
|
||||||
|
webapp_config: "https://github.com/optiz0r/puppet-webapp-config.git"
|
||||||
|
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git"
|
||||||
|
|
||||||
3
.puppet-lint.rc
Normal file
3
.puppet-lint.rc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--no-autoloader_layout-check
|
||||||
|
--no-class_inherits_from_params_class-check
|
||||||
|
--no-80chars-check
|
||||||
7
Gemfile
Normal file
7
Gemfile
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 3.3']
|
||||||
|
gem 'puppet', puppetversion
|
||||||
|
gem 'puppetlabs_spec_helper', '>= 0.1.0'
|
||||||
|
gem 'puppet-lint', '>= 0.3.2'
|
||||||
|
gem 'facter', '>= 1.7.0'
|
||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2014 Ben Roberts
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
97
README.md
Normal file
97
README.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
# dokuwiki
|
||||||
|
|
||||||
|
#### Table of Contents
|
||||||
|
|
||||||
|
1. [Overview](#overview)
|
||||||
|
2. [Module Description - What the module does and why it is useful](#module-description)
|
||||||
|
3. [Setup - The basics of getting started with dokuwiki](#setup)
|
||||||
|
* [What dokuwiki affects](#what-dokuwiki-affects)
|
||||||
|
* [Setup requirements](#setup-requirements)
|
||||||
|
* [Beginning with dokuwiki](#beginning-with-dokuwiki)
|
||||||
|
4. [Usage - Configuration options and additional functionality](#usage)
|
||||||
|
5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
|
||||||
|
5. [Limitations - OS compatibility, etc.](#limitations)
|
||||||
|
6. [Development - Guide for contributing to the module](#development)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This module installs and configures dokuwiki (https://www.dokuwiki.org/dokuwiki).
|
||||||
|
|
||||||
|
## Module Description
|
||||||
|
|
||||||
|
The dokuwiki module sets up dokuwiki including package installation, configuration
|
||||||
|
of both the application and apache.
|
||||||
|
|
||||||
|
Under gentoo-based systems it makes use of the `webapp_config` tool.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
### What dokuwiki affects
|
||||||
|
|
||||||
|
* dokiwiki package.
|
||||||
|
* dokuwiki configuration file.
|
||||||
|
* apache vhost configuration.
|
||||||
|
|
||||||
|
### Setup Requirements
|
||||||
|
|
||||||
|
This module assumes apache is already configured and that it can just drop a vhost
|
||||||
|
definition file into an apache configuration directory.
|
||||||
|
|
||||||
|
### Beginning with dokuwiki
|
||||||
|
|
||||||
|
```
|
||||||
|
include '::dokuwiki'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
All options and configuration can be done through interacting with the parameters
|
||||||
|
on the main dokuwiki class. These are documented below
|
||||||
|
|
||||||
|
### dokuwiki class
|
||||||
|
|
||||||
|
```
|
||||||
|
class {
|
||||||
|
'::dokuwiki':
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
### Classes
|
||||||
|
|
||||||
|
* dokuwiki: Main class for installation,
|
||||||
|
* dokuwiki::config: Main class for dokuwiki configuration/management.
|
||||||
|
* dokuwiki::install: Handles package installation.
|
||||||
|
* dokuwiki::params: Different configuration data for different systems.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
This module has been built on and tested against puppet 3.7 and higher.
|
||||||
|
|
||||||
|
This module has been tested on:
|
||||||
|
* Sabayon 2014.12
|
||||||
|
|
||||||
|
### Module dependencies
|
||||||
|
|
||||||
|
To be able to install multiple instances of dokuwiki on a single host
|
||||||
|
this module makes use of the `webapp_config` tool on Gentoo-based systems.
|
||||||
|
It makes use of the `optiz0r-webapp_config` module to manage this, and
|
||||||
|
you will need to arrange to have a copy of this available on your puppet
|
||||||
|
master using `r10k`, `librarian-puppet`.
|
||||||
|
|
||||||
|
Note, this module is not currently available on the module forge, and can
|
||||||
|
instead be retrieved from https://github.com/optiz0r/puppet-webapp-config.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
This module is opensource and contributions are welcome. Please feel free
|
||||||
|
to submit a pull request with any enhancements.
|
||||||
|
|
||||||
|
## Authors
|
||||||
|
|
||||||
|
* Ben Roberts <me@benroberts.net>
|
||||||
|
|
||||||
19
Rakefile
Normal file
19
Rakefile
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
require 'rubygems'
|
||||||
|
require 'puppetlabs_spec_helper/rake_tasks'
|
||||||
|
require 'puppet-lint/tasks/puppet-lint'
|
||||||
|
PuppetLint.configuration.send('disable_80chars')
|
||||||
|
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
||||||
|
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]
|
||||||
|
|
||||||
|
desc "Validate manifests, templates, and ruby files"
|
||||||
|
task :validate do
|
||||||
|
Dir['manifests/**/*.pp'].each do |manifest|
|
||||||
|
sh "puppet parser validate --noop #{manifest}"
|
||||||
|
end
|
||||||
|
Dir['spec/**/*.rb','lib/**/*.rb'].each do |ruby_file|
|
||||||
|
sh "ruby -c #{ruby_file}" unless ruby_file =~ /spec\/fixtures/
|
||||||
|
end
|
||||||
|
Dir['templates/**/*.erb'].each do |template|
|
||||||
|
sh "erb -P -x -T '-' #{template} | ruby -c"
|
||||||
|
end
|
||||||
|
end
|
||||||
82
manifests/config.pp
Normal file
82
manifests/config.pp
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# == Class: dokuwiki::config
|
||||||
|
#
|
||||||
|
# See the README.md for documentation
|
||||||
|
#
|
||||||
|
class dokuwiki::config (
|
||||||
|
$manage_vhost = $dokuwiki::manage_vhost,
|
||||||
|
$vhost = $dokuwiki::vhost,
|
||||||
|
$base_path = $dokuwiki::base_path,
|
||||||
|
$apache_confdir = $dokuwiki::apache_confdir,
|
||||||
|
$apache_user = $dokuwiki::apache_user,
|
||||||
|
$apache_group = $dokuwiki::apache_group,
|
||||||
|
$install_dir = $dokuwiki::install_dir,
|
||||||
|
$data_dir = $dokuwiki::data_dir,
|
||||||
|
$local_conf_template = $dokuwiki::local_conf_template,
|
||||||
|
$protected_conf_template = $dokuwiki::protected_conf_template,
|
||||||
|
$wiki_title = $dokuwiki::wiki_title,
|
||||||
|
$userewrite = $dokuwiki::userewrite,
|
||||||
|
$use_acl = $dokuwiki::use_acl,
|
||||||
|
$breadcrumbs = $dokuwiki::breadcrumbs,
|
||||||
|
$youarehere = $dokuwiki::youarehere,
|
||||||
|
$updatecheck = $dokuwiki::updatecheck,
|
||||||
|
$content_license = $dokuwiki::content_license,
|
||||||
|
$locktime = $dokuwiki::locktime,
|
||||||
|
$auth_type = $dokuwiki::auth_type,
|
||||||
|
$ldap_version = $dokuwiki::ldap_version,
|
||||||
|
$ldap_servers = $dokuwiki::ldap_servers,
|
||||||
|
$ldap_user_tree = $dokuwiki::ldap_user_tree,
|
||||||
|
$ldap_user_filter = $dokuwiki::ldap_user_filter,
|
||||||
|
$ldap_user_scope = $dokuwiki::ldap_user_scope,
|
||||||
|
$ldap_user_account_attr = $dokuwiki::ldap_user_account_attr,
|
||||||
|
$ldap_group_tree = $dokuwiki::ldap_group_tree,
|
||||||
|
$ldap_group_filter = $dokuwiki::ldap_group_filter,
|
||||||
|
$ldap_group_scope = $dokuwiki::ldap_group_scope,
|
||||||
|
$ldap_starttls = $dokuwiki::ldap_starttls,
|
||||||
|
$ldap_use_sso = $dokuwiki::ldap_use_sso,
|
||||||
|
$ldap_recursive_search = $dokuwiki::ldap_recursive_search,
|
||||||
|
$ldap_binddn = $dokuwiki::ldap_binddn,
|
||||||
|
$ldap_bindpw = $dokuwiki::ldap_bindpw,
|
||||||
|
$use_referrals = $dokuwiki::use_referrals,
|
||||||
|
$ldap_mapping_name = $dokuwiki::ldap_mapping_name,
|
||||||
|
$ldap_mapping_groups = $dokuwiki::ldap_mapping_groups,
|
||||||
|
) {
|
||||||
|
|
||||||
|
if $base_path == '' or $base_path =~ /\/$/ {
|
||||||
|
$base_path_suffix = ''
|
||||||
|
} else {
|
||||||
|
$base_path_suffix = '/'
|
||||||
|
}
|
||||||
|
|
||||||
|
file {
|
||||||
|
"${install_dir}/${base_path}${base_path_suffix}conf/local.php":
|
||||||
|
content => template($local_conf_template),
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0444',
|
||||||
|
replace => false;
|
||||||
|
|
||||||
|
"${install_dir}/${base_path}${base_path_suffix}conf/local.protected.php":
|
||||||
|
content => template($protected_conf_template),
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0444';
|
||||||
|
|
||||||
|
$data_dir:
|
||||||
|
ensure => directory,
|
||||||
|
owner => $apache_user,
|
||||||
|
group => $apache_group,
|
||||||
|
mode => '0664';
|
||||||
|
}
|
||||||
|
|
||||||
|
if $manage_vhost {
|
||||||
|
file {
|
||||||
|
"${apache_confdir}/${vhost}.conf":
|
||||||
|
content => template('dokuwiki/vhost.conf.erb'),
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0444';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
80
manifests/init.pp
Normal file
80
manifests/init.pp
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# == Class: dokuwiki
|
||||||
|
#
|
||||||
|
# See the README.md for documentation
|
||||||
|
#
|
||||||
|
class dokuwiki (
|
||||||
|
$version = $dokuwiki::params::version,
|
||||||
|
$package_category = $dokuwiki::params::package_category,
|
||||||
|
$package_name = $dokuwiki::params::package_name,
|
||||||
|
$use_webapp_config = $dokuwiki::params::use_webapp_config,
|
||||||
|
$manage_vhost = $dokuwiki::params::manage_vhost,
|
||||||
|
$vhost = $dokuwiki::params::vhost,
|
||||||
|
$base_path = $dokuwiki::params::base_path,
|
||||||
|
$apache_confdir = $dokuwiki::params::apache_confdir,
|
||||||
|
$apache_user = $dokuwiki::params::apache_user,
|
||||||
|
$apache_group = $dokuwiki::params::apache_group,
|
||||||
|
$vhost_conf_template = $dokuwiki::params::vhost_conf_template,
|
||||||
|
$install_dir = $dokuwiki::params::install_dir,
|
||||||
|
$data_dir = $dokuwiki::params::data_dir,
|
||||||
|
$local_conf_template = $dokuwiki::params::local_conf_template,
|
||||||
|
$protected_conf_template = $dokuwiki::params::protected_conf_template,
|
||||||
|
$wiki_title = $dokuwiki::params::wiki_title,
|
||||||
|
$userewrite = $dokuwiki::params::userewrite,
|
||||||
|
$use_acl = $dokuwiki::params::use_acl,
|
||||||
|
$breadcrumbs = $dokuwiki::params::breadcrumbs,
|
||||||
|
$youarehere = $dokuwiki::params::youarehere,
|
||||||
|
$updatecheck = $dokuwiki::params::updatecheck,
|
||||||
|
$content_license = $dokuwiki::params::content_license,
|
||||||
|
$locktime = $dokuwiki::params::locktime,
|
||||||
|
$auth_type = $dokuwiki::params::auth_type,
|
||||||
|
$ldap_version = $dokuwiki::params::ldap_version,
|
||||||
|
$ldap_servers = $dokuwiki::params::ldap_servers,
|
||||||
|
$ldap_user_tree = $dokuwiki::params::ldap_user_tree,
|
||||||
|
$ldap_user_filter = $dokuwiki::params::ldap_user_filter,
|
||||||
|
$ldap_user_scope = $dokuwiki::params::ldap_user_scope,
|
||||||
|
$ldap_user_account_attr = $dokuwiki::params::ldap_user_account_attr,
|
||||||
|
$ldap_group_tree = $dokuwiki::params::ldap_group_tree,
|
||||||
|
$ldap_group_filter = $dokuwiki::params::ldap_group_filter,
|
||||||
|
$ldap_group_scope = $dokuwiki::params::ldap_group_scope,
|
||||||
|
$ldap_starttls = $dokuwiki::params::ldap_starttls,
|
||||||
|
$ldap_use_sso = $dokuwiki::params::ldap_use_sso,
|
||||||
|
$ldap_recursive_search = $dokuwiki::params::ldap_recursive_search,
|
||||||
|
$ldap_binddn = $dokuwiki::params::ldap_binddn,
|
||||||
|
$ldap_bindpw = $dokuwiki::params::ldap_bindpw,
|
||||||
|
$use_referrals = $dokuwiki::params::use_referrals,
|
||||||
|
$ldap_mapping_name = $dokuwiki::params::ldap_mapping_name,
|
||||||
|
$ldap_mapping_groups = $dokuwiki::params::ldap_mapping_groups,
|
||||||
|
) inherits dokuwiki::params {
|
||||||
|
|
||||||
|
# Allow a big-endian date format with optional letter suffix
|
||||||
|
validate_re($version, '^\d{8}[a-z]?$')
|
||||||
|
validate_string($package_category)
|
||||||
|
validate_string($package_name)
|
||||||
|
validate_bool($use_webapp_config)
|
||||||
|
validate_bool($manage_vhost)
|
||||||
|
validate_string($vhost)
|
||||||
|
validate_string($base_path)
|
||||||
|
validate_string($apache_confdir)
|
||||||
|
validate_string($vhost_conf_template)
|
||||||
|
validate_absolute_path($install_dir)
|
||||||
|
validate_absolute_path($data_dir)
|
||||||
|
validate_string($local_conf_template)
|
||||||
|
validate_string($protected_conf_template)
|
||||||
|
|
||||||
|
include '::dokuwiki::install'
|
||||||
|
include '::dokuwiki::config'
|
||||||
|
|
||||||
|
# Anchor this as per #8040 - this ensures that classes won't float off and
|
||||||
|
# mess everything up. You can read about this at:
|
||||||
|
# http://docs.puppetlabs.com/puppet/2.7/reference/lang_containment.html#known-issues
|
||||||
|
anchor {
|
||||||
|
'dokuwiki::begin': ;
|
||||||
|
'dokuwiki::end': ;
|
||||||
|
}
|
||||||
|
|
||||||
|
Anchor['dokuwiki::begin']
|
||||||
|
-> Class['::dokuwiki::install']
|
||||||
|
-> Class['::dokuwiki::config']
|
||||||
|
-> Anchor['dokuwiki::end']
|
||||||
|
|
||||||
|
}
|
||||||
34
manifests/install.pp
Normal file
34
manifests/install.pp
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# == Class: dokuwiki::install
|
||||||
|
#
|
||||||
|
# See the README.md for documentation
|
||||||
|
#
|
||||||
|
class dokuwiki::install (
|
||||||
|
$version = $dokuwiki::version,
|
||||||
|
$package_category = $dokuwiki::package_category,
|
||||||
|
$package_name = $dokuwiki::package_name,
|
||||||
|
$use_webapp_config = $dokuwiki::use_webapp_config,
|
||||||
|
$vhost = $dokuwiki::vhost,
|
||||||
|
$base_path = $dokuwiki::base_path,
|
||||||
|
) {
|
||||||
|
|
||||||
|
package {
|
||||||
|
'www-apps/dokuwiki':
|
||||||
|
ensure => $version,
|
||||||
|
category => $package_category,
|
||||||
|
name => $package_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if $use_webapp_config {
|
||||||
|
webapp_config {
|
||||||
|
"dokuwiki-${version}":
|
||||||
|
action => 'install',
|
||||||
|
vhost => $vhost,
|
||||||
|
base => $base_path,
|
||||||
|
app => 'dokuwiki',
|
||||||
|
version => $version,
|
||||||
|
depends => Package['www-apps/dokuwiki'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
61
manifests/params.pp
Normal file
61
manifests/params.pp
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# == Class: dokuwiki::params
|
||||||
|
#
|
||||||
|
# See the README.md for documentation
|
||||||
|
#
|
||||||
|
class dokuwiki::params {
|
||||||
|
|
||||||
|
case $::osfamily {
|
||||||
|
'Gentoo': {
|
||||||
|
$package_category = 'www-apps'
|
||||||
|
$package_name = 'dokuwiki'
|
||||||
|
$version = '20140929a'
|
||||||
|
$use_webapp_config = true
|
||||||
|
$apache_confdir = '/etc/apache/vhosts.d'
|
||||||
|
$apache_user = 'apache'
|
||||||
|
$apache_group = 'apache'
|
||||||
|
}
|
||||||
|
|
||||||
|
default: {
|
||||||
|
fail("The ${module_name} module is not supported on an ${::osfamily} based system.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$manage_vhost = true
|
||||||
|
$vhost = 'dokuwiki.example.com'
|
||||||
|
$base_path = 'dokuwiki'
|
||||||
|
$install_dir = '/var/www/localhost/htdocs'
|
||||||
|
$data_dir = '/var/www/localhost/htdocs/data'
|
||||||
|
$vhost_conf_template = 'dokuwiki/vhost.conf.erb'
|
||||||
|
$local_conf_template = 'dokuwiki/local.php.erb'
|
||||||
|
$protected_conf_template = 'dokuwiki/local.protected.php.erb'
|
||||||
|
|
||||||
|
# Configuration directives
|
||||||
|
$wiki_title = 'dokuwiki'
|
||||||
|
$userewrite = true
|
||||||
|
$use_acl = true
|
||||||
|
$breadcrumbs = false
|
||||||
|
$youarehere = true
|
||||||
|
$updatecheck = false
|
||||||
|
$content_license = 'CC-BY-SA'
|
||||||
|
$locktime = 30*60
|
||||||
|
$auth_type = 'ldap'
|
||||||
|
$ldap_version = 3
|
||||||
|
$ldap_servers = ['ldap']
|
||||||
|
$ldap_user_tree = 'ou=People,dc=local'
|
||||||
|
$ldap_user_filter = '(&(uid=%{user})(objectClass=posixAccount))'
|
||||||
|
$ldap_user_scope = 'sub'
|
||||||
|
$ldap_user_account_attr = 'uid'
|
||||||
|
$ldap_group_tree = 'ou=Group,dc=local'
|
||||||
|
$ldap_group_filter = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUid=%{user})))'
|
||||||
|
$ldap_group_scope = 'sub'
|
||||||
|
$ldap_starttls = true
|
||||||
|
$ldap_use_sso = true
|
||||||
|
$ldap_recursive_search = true
|
||||||
|
$ldap_binddn = 'cn=admin,dc=local'
|
||||||
|
$ldap_bindpw = 'changeme'
|
||||||
|
$use_referrals = true
|
||||||
|
$ldap_mapping_name = 'name'
|
||||||
|
$ldap_mapping_groups = []
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
14
metadata.json
Normal file
14
metadata.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "optiz0r-dokuwiki",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"author": "Ben Roberts",
|
||||||
|
"summary": "Installs and configures dokuwiki",
|
||||||
|
"license": "MIT",
|
||||||
|
"source": "https://gitlab.sihnon.net/ben/puppet-dokuwiki.git",
|
||||||
|
"project_page": "https://gitlab.sihnon.net/ben/puppet-dokuwiki",
|
||||||
|
"issues_url": "https://gitlab.sihnon.net/ben/puppet-dokuwiki/issues",
|
||||||
|
"dependencies": [
|
||||||
|
{"name":"puppetlabs-stdlib","version_requirement":">= 1.0.0"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
23
spec/classes/config_spec.rb
Normal file
23
spec/classes/config_spec.rb
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
describe 'dokuwiki::config' do
|
||||||
|
|
||||||
|
context 'with defaults for all parameters' do
|
||||||
|
let(:params) {{
|
||||||
|
:manage_vhost => true,
|
||||||
|
:vhost => 'dokuwiki.example.com',
|
||||||
|
:base_path => 'dokuwiki',
|
||||||
|
:apache_confdir => '/etc/apache2/vhosts.d',
|
||||||
|
:install_dir => '/var/www/localhost/htdocs',
|
||||||
|
:local_conf_template => 'dokuwiki/local.php.erb',
|
||||||
|
:protected_conf_template => 'dokuwiki/local.protected.php.erb',
|
||||||
|
:ldap_servers => ['ldap'],
|
||||||
|
}}
|
||||||
|
|
||||||
|
it { should contain_file('/var/www/localhost/htdocs/dokuwiki/conf/local.php') }
|
||||||
|
it {
|
||||||
|
should contain_file('/var/www/localhost/htdocs/dokuwiki/conf/local.protected.php')
|
||||||
|
.with_content(/Managed by puppet/)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
23
spec/classes/init_spec.rb
Normal file
23
spec/classes/init_spec.rb
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
describe 'dokuwiki' do
|
||||||
|
|
||||||
|
context 'on unsupported distributions' do
|
||||||
|
let(:facts) {{
|
||||||
|
:osfamily => 'Unsupported',
|
||||||
|
}}
|
||||||
|
|
||||||
|
it 'we fail' do
|
||||||
|
expect { subject }.to raise_error(/not supported on an Unsupported/)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with defaults for all parameters' do
|
||||||
|
let(:facts) {{
|
||||||
|
:osfamily => 'Gentoo',
|
||||||
|
}}
|
||||||
|
|
||||||
|
it { should contain_class('dokuwiki') }
|
||||||
|
it { should contain_class('dokuwiki::install') }
|
||||||
|
it { should contain_class('dokuwiki::config') }
|
||||||
|
end
|
||||||
|
end
|
||||||
17
spec/classes/install_spec.rb
Normal file
17
spec/classes/install_spec.rb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
describe 'dokuwiki::install' do
|
||||||
|
|
||||||
|
context 'with defaults for all parameters' do
|
||||||
|
it { should contain_package('www-apps/dokuwiki') }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'on Gentoo' do
|
||||||
|
let(:params) {{
|
||||||
|
:use_webapp_config => true,
|
||||||
|
:version => '123'
|
||||||
|
}}
|
||||||
|
|
||||||
|
it { should contain_webapp_config('dokuwiki-123') }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
2
spec/spec_helper.rb
Normal file
2
spec/spec_helper.rb
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
require 'puppetlabs_spec_helper/module_spec_helper'
|
||||||
|
require 'hiera'
|
||||||
13
templates/local.php.erb
Normal file
13
templates/local.php.erb
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This initial file was deployed via puppet but will not be replaced
|
||||||
|
* and can be modified using the dokuwiki admin interface. Settings
|
||||||
|
* that should be continually managed by puppet should be put into the
|
||||||
|
* local.protected.php file instead.
|
||||||
|
*
|
||||||
|
* This is an example of how a local.php could look like.
|
||||||
|
* Simply copy the options you want to change from dokuwiki.php
|
||||||
|
* to this file and change them.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
49
templates/local.protected.php.erb
Normal file
49
templates/local.protected.php.erb
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
# Managed by puppet
|
||||||
|
# Local modifications to this file will be lost
|
||||||
|
|
||||||
|
$conf['title'] = '<%= @wiki_title %>';
|
||||||
|
$conf['savedir'] = '<%= @data_dir %>';
|
||||||
|
$conf['useacl'] = <%= @use_acl ? 1 : 0 %>;
|
||||||
|
$conf['userewrite'] = <%= @use_rewrite ? 1 : 0 %>;
|
||||||
|
|
||||||
|
# Disable use of any standard content licenses, e.g. CC
|
||||||
|
$conf['license'] = '<%= @content_license %>';
|
||||||
|
|
||||||
|
# Override the page lock timer
|
||||||
|
$conf['locktime'] = <%= @locktime %>; # 30*60
|
||||||
|
|
||||||
|
# User interface tweaks
|
||||||
|
$conf['breadcrumbs'] = <%= @breadcrumbs ? 1 : 0 %>;
|
||||||
|
$conf['youarehere'] = <%= @youarehere ? 1 : 0 %>;
|
||||||
|
$conf['updatecheck'] = <%= @updatecheck ? 1 : 0 %>;
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
$conf['openregister'] =
|
||||||
|
$conf['authtype'] = '<%= @auth_type %>';
|
||||||
|
<%- if @auth_type == 'ldap' -%>
|
||||||
|
$conf['auth']['ldap']['version'] = '<%= @ldap_version %>';
|
||||||
|
$conf['auth']['ldap']['server'] = 'ldap://<%= @ldap_servers.join(" ") %>:389';
|
||||||
|
$conf['auth']['ldap']['usertree'] = '<%= @ldap_user_tree %>';
|
||||||
|
$conf['auth']['ldap']['userfilter'] = '<%= @ldap_user_filter %>';
|
||||||
|
$conf['auth']['ldap']['userscope'] = '<%= @ldap_user_scope %>';
|
||||||
|
$conf['auth']['ldap']['grouptree'] = '<%= @ldap_group_tree %>';
|
||||||
|
$conf['auth']['ldap']['groupfilter'] = '<%= @ldap_group_filter %>';
|
||||||
|
$conf['auth']['ldap']['groupscope'] = '<%= @ldap_group_scope %>';
|
||||||
|
$conf['auth']['ldap']['starttls'] = <%= @ldap_starttls ? 1 : 0 %>;
|
||||||
|
$conf['auth']['ldap']['sso'] = <%= @ldap_use_sso ? 1 : 0 %>;
|
||||||
|
$conf['auth']['ldap']['recursive'] = <%= @ldap_recursive_search ? 1 : 0 %>;
|
||||||
|
$conf['auth']['ldap']['binddn'] = '<%= @ldap_binddn %>';
|
||||||
|
$conf['auth']['ldap']['bindpw'] = '<%= @ldap_bindpw %>';
|
||||||
|
$conf['auth']['ldap']['referrals'] = <%= @use_referrals ? 1 : 0 %>;
|
||||||
|
$conf['auth']['ldap']['mapping']['name'] = '<%= @ldap_mapping_name %>';
|
||||||
|
$conf['auth']['ldap']['mapping']['grps'] = array();
|
||||||
|
<%- @ldap_mapping_groups.each do |key, value| -%>
|
||||||
|
$conf['auth']['ldap']['mapping']['grps']['<%= key %>'] = '<%= value %>';
|
||||||
|
<%- end -%>
|
||||||
|
$conf['auth']['ldap']['debug'] = 1;
|
||||||
|
<%- end -%>
|
||||||
|
|
||||||
|
$conf['manager'] = '<%= @management_group %>';
|
||||||
|
$conf['superuser'] = '<%= @management_group %>';
|
||||||
|
|
||||||
60
templates/vhost.conf.erb
Normal file
60
templates/vhost.conf.erb
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<VirtualHost *:80>
|
||||||
|
|
||||||
|
ServerName <%= @vhost %>
|
||||||
|
DocumentRoot <%= @install_dir %>/<%= @base_path %>
|
||||||
|
|
||||||
|
# Permit larger file uploads
|
||||||
|
php_value upload_max_filesize 20M
|
||||||
|
# Must be at least as large as upload_max_filesize, plus a bit
|
||||||
|
# for the form metadata
|
||||||
|
php_value post_max_size 24M
|
||||||
|
|
||||||
|
<Directory "<%= @install_dir %>/<%= @base_path %><%= @base_path_suffix %>">
|
||||||
|
AllowOverride None
|
||||||
|
Options +FollowSymLinks
|
||||||
|
Order Allow,Deny
|
||||||
|
Allow from All
|
||||||
|
|
||||||
|
<%- if @auth_type == 'ldap' -%>
|
||||||
|
AuthType Basic
|
||||||
|
AuthName "LDAP Auth"
|
||||||
|
AuthBasicProvider "ldap"
|
||||||
|
AuthLDAPUrl "ldap://<%= @ldap_servers.join(" ") %>:389/<%= @ldap_usertree %>?<%= @ldap_user_account_attr %>?<%= @ldap_user_scope %>"
|
||||||
|
Require valid-user
|
||||||
|
<%- end -%>
|
||||||
|
|
||||||
|
RewriteEngine on
|
||||||
|
RewriteBase /<%= @base_path %><%= @base_path_suffix %>
|
||||||
|
RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L]
|
||||||
|
RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L]
|
||||||
|
RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L]
|
||||||
|
RewriteRule ^$ doku.php [L]
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
RewriteRule (.*) doku.php?id=$1 [QSA,L]
|
||||||
|
RewriteRule ^index.php$ doku.php
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Explicitly deny access to all code and configuration directories
|
||||||
|
<Directory "<%= @install_dir %>/<%= @base_path %><%= @base_path_suffix %>/inc">
|
||||||
|
Order Deny,Allow
|
||||||
|
Deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory "<%= @install_dir %>/<%= @base_path %><%= @base_path_suffix %>/inc/lang">
|
||||||
|
Order Deny,Allow
|
||||||
|
Deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory "<%= @install_dir %>/<%= @base_path %><%= @base_path_suffix %>/lib/_fla">
|
||||||
|
## no access to the fla directory
|
||||||
|
Order allow,deny
|
||||||
|
Deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory /etc/dokuwiki>
|
||||||
|
Order Deny,Allow
|
||||||
|
Deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
</VirtualHost>
|
||||||
12
tests/init.pp
Normal file
12
tests/init.pp
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# The baseline for module testing used by Puppet Labs is that each manifest
|
||||||
|
# should have a corresponding test manifest that declares that class or defined
|
||||||
|
# type.
|
||||||
|
#
|
||||||
|
# Tests are then run by using puppet apply --noop (to check for compilation
|
||||||
|
# errors and view a log of events) or by fully applying the test in a virtual
|
||||||
|
# environment (to compare the resulting system state to the desired state).
|
||||||
|
#
|
||||||
|
# Learn more about module testing here:
|
||||||
|
# http://docs.puppetlabs.com/guides/tests_smoke.html
|
||||||
|
#
|
||||||
|
include dokuwiki
|
||||||
Reference in New Issue
Block a user