Version information
This version is compatible with:
- Puppet Enterprise 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x
- Puppet >= 5.5.8 < 7.0.0
- ,
This module has been deprecated by its author since Aug 19th 2024.
The reason given was: Deprecating it on Forge as per owner request.
Start using this module
Documentation
Etherpad module for Puppet
Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with etherpad
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Overview
This module installs and configures etherpad(-lite). It's inspired by existing etherpad modules on the Forge, but attempts to "do it right™".
Setup
What etherpad affects
- This module depends on puppet-nodejs
- It also depends on puppetlabs-vcsrepo, and hence git
- It will setup a service using the system's preferred init
- When running installDeps.sh, this module requires all the usual build tools, development packages and headers as any other (complex) npm install
- When running on ubuntu OS, it will setup apt sources for nodejs with puppetlabs-apt.
Setup Requirements
This module requires a database. With no database available, it will use DirtyDB as fallback. This is not intended for production use.
For a migration from DirtyDB, please consult this blog post
On Ubuntu system, as soft dependency, you will need to ensure that puppetlabs-apt version 4.4.0 or above is installed.
Beginning with etherpad
Before to installation, a target database should exist. Please consult the documentation of puppetlabs-postgresql, or puppetlabs-mysql for how to create those.
Usage
The basic usage is:
include ::etherpad
note that this will use the local DirtyDB and is not recommended beyond basic testing. For production setups, use:
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
users => {
admin => {
password => 's3cr3t',
is_admin => true,
},
user => {
password => 'secret',
is_admin => false,
},
},
}
Reference
etherpad
The etherpad module installs and configures etherpad. This class is the entry point for the module and the configuration point.
ensure
Ensure the presence (present
, latest
) or absence (absent
) of etherpad.
This can also be set to a specific version (or SHA1 hash). By default, we
install from the branch develop
, in order to cater for newer versions of
Nodejs. absent
will completely remove the software, its dependencies, and the
users and groups.
Type | Default |
---|---|
String | present |
service_name
Name under which the service will be known.
Type | Default |
---|---|
String | etherpad |
service_ensure
Ensure whether the service is running or stopped. If you're passing absent
to
ensure
, please also pass stopped
to service_ensure
.
Type | Default |
---|---|
Enum['running', 'stopped'] | running |
service_provider
Which service provider
to use. By default this is taken from stdlib's $::service_provider
fact.
Currently only upstart
and systemd
are supported!
Type | Default |
---|---|
Optional[String] | $::service_provider |
manage_user
Whether to manage the user & group under which etherpad will be running.
Type | Default |
---|---|
Boolean | true |
manage_abiword
Whether to manage the dependency of the abiword package.
Type | Default |
---|---|
Boolean | false |
abiword_path
Absolute Path to the abiword binary.
Type | Default |
---|---|
String | /usr/bin/abiword |
manage_tidy
Whether to manage the dependency of the tidy package.
Type | Default |
---|---|
Boolean | false |
abiword_path
Absolute Path to the abiword binary.
Type | Default |
---|---|
String | /usr/bin/abiword |
user & group
The user and group under which etherpad will be running.
Type | Default |
---|---|
String | etherpad |
root_dir
Absolute Path of the etherpad installation.
Type | Default |
---|---|
String | /opt/etherpad |
source
URL to the git source of etherpad.
Type | Default |
---|---|
String | 'https://github.com/ether/etherpad-lite.git' |
database_type
The type of database that etherpad should use. In case of mysql
or postgres
,
you'll also have to set the options below.
Type | Default |
---|---|
Enum[dirty , mysql , sqlite , postgres ] |
dirty |
database_host
Host on which the database is running.
Type | Default |
---|---|
String | localhost |
database_user
User (or role) to use, when connecting to the database.
Type | Default |
---|---|
String | etherpad |
database_name
Name of database to connect to.
Type | Default |
---|---|
String | etherpad |
database_password
Password to use when connecting to database.
Type | Default |
---|---|
String | etherpad |
ip
IP on which etherpad will be listening. The default, undef
, turns into
null
, and hence NodeJS' default of "all interfaces".
Type | Default |
---|---|
String | undef |
port
Port on which etherpad will be listening.
Type | Default |
---|---|
Integer | 9001 |
trust_proxy
This value should be set if etherpad is running behind a proxy.
Type | Default |
---|---|
Boolean | false |
max_age
How long clients may use served JavaScript code (in seconds).
Type | Default |
---|---|
Integer | 21600 |
minify
Whether to minify the delivered JavaScript and CSS.
Type | Default |
---|---|
Boolean | true |
require_session
Users must have a session to access pads. This effectively allows only group pads to be accessed.
Type | Default |
---|---|
Boolean | false |
edit_only
Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads.
Type | Default |
---|---|
Boolean | false |
require_authentication
This setting is used if you require authentication of all users.
Note: /admin
always requires authentication.
Type | Default |
---|---|
Boolean | false |
require_authorization
Require authorization by a module, or a user with is_admin set, see below.
Type | Default |
---|---|
Boolean | false |
use_default_ldapauth
Merge default ldapauth options to final config of ep_ldapauth plugin. If set to 'false' it can be used to omit default searchDN and searchPWD for anonymous ldap access.
Type | Default |
---|---|
Boolean | true |
plugins_list
Manage etherpad's plugins.
Type | Default |
---|---|
Hash[Pattern['ep_*'], Variant[Boolean, Undef]] | {} |
Existing two kinds of plugins:
- Simple plugins : Supported plugins that does not modify
settings.json
. - Advanced plugins : Supported plugins that accept configuration parameters in
settings.json
.
Keys in plugins_list
must be default plugins name.
Values in plugins_list
can be:
undef
: Install any simple plugins or advanced plugins with its default configuration.true
: Install advanced plugins with provided configuration by class attributs. See beelow detailed section about each plugin.false
: Uninstall any plugins.
List of all plugins is avalable at https://static.etherpad.org/plugins.html
Plugin name | Supported |
---|---|
ep_button_link |
YES |
ep_ldapauth |
YES |
ep_mypads |
YES |
All simple plugins | YES |
If the plugin is not supported, it will be installed but whitout configuration.
Examples :
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
users => {
admin => {
password => 's3cr3t',
is_admin => true,
},
user => {
password => 'secret',
is_admin => false,
},
},
plugins_list => {
ep_button_link => true,
ep_align => undef,
ep_ldapauth => false,
},
}
In this case ep_button_link
will be installed with the configuration in settings.json
, ep_align
will be just installed and ep_ldapauth
will be uninstalled.
class { 'etherpad':
ensure => 'present',
database_type => 'mysql',
database_name => 'etherpad',
database_user => 'etherpad',
database_password => '37h3rp4d',
plugins_list => {
ep_button_link => true,
ep_align => undef,
ep_mypads => true,
},
mypads => {
searchBase => 'cn=users,cn=accounts,dc=example,dc=com',
url => 'ldaps://ipa.example.com:636',
bindDN => 'uid=binduser,cn=sysaccounts,cn=etc,dc=example,dc=com',
bindCredentials => 'bindpassword',
searchFilter => '(memberOf=cn=etherpad_users,cn=groups,cn=accounts,dc=example,dc=com)'
},
ep_local_admin_login => 'my_ep_adminuser',
ep_local_admin_pwd => 'my_ep_adminsecret',
}
In this case ep_button_link
and ep_mypads
will be installed with some configurations in settings.json
, ep_align
will be just installed without configuration.
button_link
Manage the configuration of ep_button_link
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_button_link' |
ldapauth
Manage the configuration of ep_ldapauth
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_ldapauth' |
mypads
Manage the configuration of ep_mypads
.
Type | Default |
---|---|
Type | 'https://www.npmjs.com/package/ep_mypads' or 'https://git.framasoft.org/framasoft/Etherpad/ep_mypads/wikis/use-ldap-authentication' |
pad_title
Name of your instance
Type | Default |
---|---|
Optional[String] | undef |
default_pad_text
The default text of a pad.
Type | Default |
---|---|
String | Welcome to etherpad! |
logconfig_file
Enable/disable logging to a file.
Type | Default |
---|---|
Boolean | false |
logconfig_file_filename
Specify the file to log to, if logconfig_file is enabled.
Type | Default |
---|---|
Optional[String] | undef |
logconfig_file_max_log_size
The maximum logfile size (megabytes) before rotating the log file.
Type | Default |
---|---|
Optional[Integer] | undef |
logconfig_file_backups
The number of logfiles to keep after rotation.
Type | Default |
---|---|
Optional[Integer] | undef |
logconfig_file_category
Only log a specific category.
Type | Default |
---|---|
Optional[String] | undef |
users
Configure users in settings.json. If both 'users' and 'ldapauth' are set only the latter one will be put into settings.json.
Type | Default |
---|---|
Optional[Hash] | undef |
padoptions
Configure pad options in settings.json.
Type | Default |
---|---|
Struct | noColors => false , showControls => true , showChat => true , showLineNumbers => true , useMonospaceFont => false , userName => false , userColor => false , rtl => false , alwaysShowChat => false , chatAndUsers => false , lang => en-gb |
Limitations
Currently, only upstart and systemd are supported as Service providers. More support is highly welcomed.
Development
Please see CONTRIBUTING.md for how to contribute patches!
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v3.2.0 (2019-10-08)
Implemented enhancements:
v3.1.0 (2019-06-18)
Implemented enhancements:
Closed issues:
- Logrotate issue when OS uses the upstart init system #22
v3.0.0 (2019-06-12)
Version 3.0.0 is a re-release of what was accidentally released as 2.3.0. Version 2.3.0 contained a breaking change (puppet 4 is no longer supported).
v2.3.0 (2019-06-11)
Breaking changes:
- modulesync 2.7.0 and drop puppet 4 #77 (bastelfreak)
Fixed bugs:
- fix datatype for tlsOptions #81 (Dan33l)
- ep_mypads does not use ep_ldapauth #80 (Dan33l)
- Allow puppetlabs/concat 6.x, puppetlabs/stdlib 6.x, puppet/nodejs 7.x; require at least stdlib 4.25.0 instead of 4.17 #79 (dhoppe)
Merged pull requests:
v2.2.0 (2018-10-08)
Implemented enhancements:
- add ubuntu 16.04 as supported OS #67 (Dan33l)
- Add ep mypad into list of supported plugins #61 (your1p)
- Add plugins auto installation #55 (your1p)
Fixed bugs:
Closed issues:
- alert logs a message on the server #70
- Needed to clean service_provider #69
- Add management for the plugins
ep\_mypads
#59 - Add plugins auto-installation method #51
- Fix the travis matrix #36
Merged pull requests:
- remove unused old providers #72 (Dan33l)
- change alert() to fail() #71 (Dan33l)
- allow puppet 6.x #68 (Dan33l)
- update nodejs version to 5.0.0 (4.7.1 does not exist) #65 (Dan33l)
- update stdlib min version to 4.17.0 (with service_provider fact) #64 (Dan33l)
- Move files for 'debian' service_provider to correct path #58 (sergiik)
- allow puppetlabs/stdlib 5.x #57 (bastelfreak)
v2.1.0 (2018-08-06)
Implemented enhancements:
- Add managment for ssl settings #34
- allow puppetlabs/vcsrepo 2.x #52 (bastelfreak)
- Fix issue #38 #46 (your1p)
- #34 manage ssl settings and add spec tests #35 (your1p)
Closed issues:
- Use a stable branch of Etherpad #47
- Fix ExecStart option for systemd #45
- Use variables instead of hard coded text in template settings.json.epp #44
- Add management for pad options #38
Merged pull requests:
- Modify the etherpad version in the module #50 (your1p)
- Remove docker nodesets #43 (bastelfreak)
- drop EOL OSs; fix puppet version range #42 (bastelfreak)
v2.0.0 (2017-11-17)
Implemented enhancements:
- Support for ep_button_link module options. Fix for ep_ldapauth boolean options #23 (sergiik)
- Add support for managing etherpad users and logfile location #18 (grigarr)
- Add option to install settings for ep_ldapauth plugin #17 (sergiik)
Fixed bugs:
Merged pull requests:
- bump puppet version dependency to >= 4.7.1 \< 6.0.0 #31 (bastelfreak)
- replace validate_* with datatypes #28 (bastelfreak)
- Add init.d script for 'debian' service_provider #26 (sergiik)
Change log
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not impact the functionality of the module.
v1.1.0 (2017-02-12)
Merged pull requests:
- Bump minimum version dependencies (for Puppet 4) #13 (juniorsysadmin)
- Add missing badges #8 (dhoppe)
v1.0.0 (2016-08-19)
Merged pull requests:
- Modulesync 0.12.2 & Release 1.0.0 #2 (bastelfreak)
* This Change Log was automatically generated by github_changelog_generator
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs-concat (>= 4.7.0 < 7.0.0)
- puppetlabs-stdlib (>= 4.25.0 < 7.0.0)
- puppetlabs-vcsrepo (>= 1.3.1 < 4.0.0)
- puppet-nodejs (>= 5.0.0 < 8.0.0)
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.