isp3node
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, 2017.3.x, 2017.2.x, 2016.4.x
- Puppet >= 4.10.0 < 7.0.0
Start using this module
Add this module to your Puppetfile:
mod 'qroac-isp3node', '0.1.2'
Learn more about managing modules with a PuppetfileDocumentation
isp3node
This module manages the installation and configuration of all services and tools required to run an ISPConfig server node. Currently it contains everything needed for a setup according to the current Debian 10 PerfectServer Tutorial from howtoforge.com with modifications for the already suggested replacement of amavis+spamassassin with rspamd.
Table of Contents
- Description
- Setup - The basics of getting started with isp3node
- Usage - Configuration options and additional functionality
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Description
Install, configure and manage all services required to host web services with ISPConfig on your nodes.
Each host managed with this module can be set up as full hosting node (all services) or with the specific configuration to run a node dedicated as master, dns, mail or web/db server.
It further automates the deployment of a manually created SSL Certificate (paid) or obtaining one for the hosts FQDN via letsencrypt. All services that depend on a valid certificate, like postfix, dovecot, isp panel, pureftpd, get provisioned with that certificate.
In Addition the module places a default ssl nginx host on its FQDN with links to all locally installed customer web interfaces like mailman, phpmyadmin or roundcube. There will be no link to rspamd. On the mailserver it is also configured at yourhost.fqdn/rspand/, but as it is no interface for customers, it is not listed in public.
Setup
# in your data.yml, default is master only for multiserver master and ISPConfig panel
isp3node::mode: full
# in your site manifest
inlcude isp3node
Alternativly you can include the isp3node class with a mode parameter class {'isp3node': mode => 'full'}
or directly include one of the provided server profiles like this:
include isp3node::profiles::full
include isp3node::profiles::master
include isp3node::profiles::dns
include isp3node::profiles::mail
include isp3node::profiles::web
Required configuration
The following configuration options need to be present in your data files. These are important project-specific settings and thus I do not set any defaults to it.
isp3node::email: your@e.mail
# FQDN of the master node, used in the manifests to determine if a node is the current master in your setup
isp3node::master: your.master.fqdn
isp3node::mariadb::root_password: supersecret
# User and Password to use from this host to connect to the master database during ISPConfig Setup or Update
# Do not use username root! This conficts with a resource that is created in the mysql installation manifests setting your local root access
isp3node::mariadb::connect_master::user: isproot
isp3node::mariadb::connect_master::password: supersecret
# If running as postfix satellite, FQDN of the used relay server
# The relay server will automatically add IPs of all its satellites to the mynetworks config variable
isp3node::postfix::satellite::relay: isptest02.spicyweb.de
# ISPConfig needs some configuration that can not be made with camptocamp-postfix module, so we need to use an own template
# That cannot be overwritten on module level, so you have to place this option on site level in your data files
postfix::params::master_os_template: isp3node/postfix/master.cf.debian.erb
# Configuration for phpMyAdmin session encryption and access to phpmyadmins config tables
isp3node::phpmyadmin::setup::blowfish_secret: supersecret
isp3node::phpmyadmin::setup::controlpass: supersecret
# Credentials to access mailmans admin settings
isp3node::mailman::configure::admin_email: your@e.mail
isp3node::mailman::configure::admin_password: supersecret
# Credentials of ISPConfig remote user for automail discovery app (optional)
isp3node::nginx::automail::remoteuser: your_rc_user
isp3node::nginx::automail::remotepass: your_rc_pass
What isp3node affects
Well, the installation and configuration of about every service needed for ISPConfig. Especially dovecot, fail2ban, php and postfix config is hardly set by isp3node or additional modules used for service management. So if you want to change congigurations for one of the installed services, safest way is to use possibilities that are already given in this module or create a pull request to extend the code to be able to apply your config changes.
The installation of ISPConfig itself it does only affect by creating remote users with privileges on dbispconfig.* for your ISP slave servers. The module further brings the deployed (hiera) or obtained (LE) SSL Certificate in place for the ISP Panel, but it does not install ISPConfig for you. That last step is still up to you.
Setup Requirements
PuppetDB
The IP List for allowed satellites to send mails using a standalone Postfix as relay is obtained from PuppetDB. So a setup running a PuppetDB along with your puppet master is a must.
Hiera Data
Some parameters for managed services need to be set for your project.
Thats because I dont want to spread my mail address over the net and receive all your LetsEncrypt notifications but also because no one shoud know passwords that are set on your installation.
As alternative to blow up variables passed from the highest to the lowest class, I decided to just define them in hiera. Less possible mistakes by forgetting to pass a variable and such.
Long story short: The parameters in Required configuration above are mandatory in your hiera data. So you can use this module only in conjunction with data files in your project.
Beginning with isp3node
Add and configure the parameters from Required configuration in your hiera data files.
Then add include isp3node
to a host to install everything required for an ISPConfig3 Master Panel server (not ment to host customer data, really only
made for panel and master database).
Usage
As said before, first make sure to add the required configuration to your data files. I recommend to use eyaml for storing passwords, secrets or private keys in yaml files, but that's up to you.
By default this module installs requirements for the master database and ISPConfig configuration panel, but not to host customer sites, DNS or mail accounts. To set up your host for a different role, you can choose from different roles:
- full: Complete installation from HowtoForge perfect server tutorial for hosting everything on one machine
- master: Prepared to host the master DB and the panel. In fact just an installation of 'web' with some not required features stripped out. If you don't want to have a dedicated master, just use a full or web node as master.
- dns: BIND9 DNS Server
- mail: Postfix MTA and dovecot, usable as mail relay for all other servers
- web: nginx webserver and MariaDB server configured for public access
You have different options to set a role for your host:
- Set it on import in class style:
class {'isp3node': mode => 'full'}
- Set it in a host-specific hiera file:
isp3node::role: full
- Directly import the desired isp3node profile:
import isp3node::profile::full
There is no risk in importing the desired profile as the main class does nothing else than that.
The profiles on the other hand just import the main setup classes of the required components, some with additional parameters. So if you need a special scenario, you can peek into the profiles and build your own one featuring a public accessible database, jailkit, Mail and DNS. Just include the desired service setup classes. (PS: Mail with rspamd still requires nginx for access to the rspamd dashboard).
Some notes on managed services
Mail Auto Discovery Plugin
This module is able to manage an automail installation on your mailservers to provide mailclients like outlook or thunderbird with autoconfig abilities to retrieve server settings for mail exchange.
Source: https://github.com/SpicyWeb-de/isp-mailConfig
To enable the managed automail installation, execute the following steps after installing ISPConfig:
- In ISPConfig under System -> Remote Users create a new user with privileges
- Server functions
- Mail User functions
- Add the users credentials to your datafile as
- isp3node::nginx::automail::remoteuser: rc_user_name
- isp3node::nginx::automail::remotepass: rc_user_password
- Optional add the following settings to modify the name of the discovered mail service, brackets show the fallback value if not defined
- isp3node::nginx::automail::service_name (FQDN)
- isp3node::nginx::automail::service_shortname (Domain)
automail will now be installed on next puppet agent run
To enable auto discovery capabilities for a domain, add the following entries to the domains DNS record: | Type | Hostname | Target | Weight | Port | Priority | |-------|--------------------|----------------------|--------|------|----------| | CNAME | autoconfig | your.mailserver.tld. | | | | | CNAME | autodiscover | your.mailserver.tld. | | | | | SRV | _autodiscover._tcp | your.mailserver.tld. | 10 | 443 | 1 |
Thats all. Auto service discovery for this domain is now enabled.
To further enable automail for all new created DNS zones, you might also want to add the following line to your ISPConfig DNS zone template:
CNAME|autoconfig|your.mailserver.tld.|0|3600
CNAME|autodiscover|your.mailserver.tld.|0|3600
SRV|discover.{DOMAIN}|1|10|443|your.mailserver.tld.|3600
Roundcube ISPConfig Plugin
If you create an ISPConfig remote user for roundcube and add its credentials to your datafile,
this module will download and configure the available ISPConfig modules for roundcube.
Be aware, that now you must list all enabled RC plugins in your data file as well because the corresponding setting in RCs config file will be overwritten by puppet.
Plugin Source: https://github.com/w2c/ispconfig3_roundcube
Permissions for remote user:
- Client functions
- Server functions
- Mail user functions
- Mail user filter functions
- Mail alias functions
- Mail forward functions
- Mail fetchmail functions
- Mail spamfilter user functions
- Mail spamfilter policy functions
- Mail spamfilter whitelist functions
- Mail spamfilter blacklist functions
# Fields for ISPConfig Remote user:
isp3node::roundcube::plugins::remoteuser: your_user
isp3node::roundcube::plugins::remotepass: your_pass
# For your plugin list to enable in rc config in this order:
# jquery-ui, [your plugins ... ,] ispconfig_plugins
isp3node::roundcube::plugins::additional:
- plugin1
- plugin2
Note that your additional plugins will only be added to the activated plugin list, but will not be downloaded or installed.
To do so, follow the official guides from roundcube and additional setup notes of the plugin authors.
Limitations
Currently this module is limited to Debian 10 only!
It will not work on any other OS as a lot of distributionspecific configuration is contained in a OS-Version-Datafile for Debian 10.
Further it does not install or update ISPConfig for you. You still have to do that on your own.
Be also warned that some of the services managed by this module will have any manual configuration changes overwritten on next run of your puppet agent.
For some services there already are variables in the configuation classes to insert some custom config. So first dig into there and look at the documented parameters of the classes.
If you cannot find anything there to make your desired configuration managable, I welcome senseful feature requests or, if you are in hurry, pull requests.
Development
Because I am as most human beings limited to 24 hours per day and am doing this in my spare time, I highly appreciate developers willing to push this module forward with me. So if you want to introduce a change in this modules code, please open a pull request.
A great description in the PR would describe the reason for the PR and telling details about what it changes and what else it could affect.
Importent for all chages
- Extract configurations, package names and so on into the data files
- Set up a default configuration that makes sense with a minimum of configuration requirements
- Require but do not include sensitive information like passwords. I think they should be forced to be set even in a testing environment.
- Speaking of: TEST. Test your changes with all predefined server roles. There is no automated test suite yet. So set up test VMs or such and assing the different roles to it (maybe the same VM again and again with reset to a snapshot in between)
In case of bugfix or code improvement
Please open an Issue first and describe the bug. In your Pull Rerquest please refer to this issue and explain the solution.
In case of new features
If you are adding new managable features or possibilities of fine-grain configuration to existing services or a new service at all, please start by opening an issue. Describe the new feature that you want to implement, why and to whom it is important.
If possible, your new feature for an existing feature should take place in a dedicated subclass of that service, that is to be included by the services main setup class. Yes, that will not work for all services. Especially when they are managend through 3rd party modules requiring to pass the whole configuration at class initialization ...
For introducing new services, please stick wherever possible to my class pattern having a main class importing first a setup class followed by a main config class and additional feature classes. That keeps the code units small and maintainable.
In case of new OSses
I can only test and maintain the code for Debian from 10 up. I dont have any other servers in my possession and especially with CentOS or RedHat too few practical experience.
So if you want to introduce a different OS than Debian, I invite you to become maintainer for isp3node regarding to this OS.
- Add the OS specific data files listing required packages
- make required changes (especially if supporting non-APT and dpkg related OSses, as that is used a lot in this module)
- Test it on your OS, I will do so on debian
- Create your pull request
- Be ready to pick up the co-maintainer hat for your OS
Sidenote: As mentioned before I can support only debian. That is why I will remove OSses without active maintainer.
Reference
Table of Contents
Classes
isp3node
: Set up requirements for running as ISPConfig managed server roleisp3node::base
: Provieds the base installation required for all ISPConfig server nodesisp3node::base::hosts
: Manages a nodes hosts entriesisp3node::base::puppet
: Configure base requirements for ispconfig node management with puppetisp3node::base::shell
: Changes the systems default shellisp3node::base::software
: Install software as required to be available on ispconfig nodesisp3node::base::ssl
: Manage the servers local main ssl certificateisp3node::bind
: Install and configure BIND DNS Serverisp3node::bind::setup
: Install BIND DNS Serverisp3node::dovecot
: Install and configure Dovecot Serverisp3node::dovecot::rspamd
: Setup RSpamd service with web dashboardisp3node::dovecot::setup
: Install Dovecot Mailbox Serverisp3node::dovecot::ssl
: Configure Dovecot to use local managed SSL Certificatesisp3node::fail2ban
: Install and manage fail2ban on the server nodeisp3node::fail2ban::setup
: Setup fail2ban on the future ISPConfig server nodeisp3node::jailkit
: Install and configure Jailkit on the hostisp3node::jailkit::setup
: Install the current version of Jailkit on the hostisp3node::mailman
: Setup mailman mailing list software on the hostisp3node::mailman::config::nginx
: Configure nginx locations for mailman accessisp3node::mailman::configure
: Configure mailman on the hostisp3node::mailman::setup
: Install mailman on the hostisp3node::mariadb
: Install and configure MariaDB on the hostisp3node::mariadb::configuration
: Configure mariadb for ispconfigisp3node::mariadb::connect_master
: Connects instances to the ISPConfig Master Databaseisp3node::mariadb::setup
:isp3node::nginx
: Setup and configure nginxisp3node::nginx::automail
: A short summary of the purpose of this classisp3node::nginx::defaulthost
: Set up a default page on hosts FQDNisp3node::nginx::ispproxyhost
: Defaultpage location for ISPConfigisp3node::nginx::setup
: Installs nginxisp3node::php
: Install and configure PHPisp3node::php::setup
: Install and configure PHP on the hostisp3node::phpmyadmin
: Setup phpMyAdminisp3node::phpmyadmin::config::nginx
: Add nginx locations to access phpMyAdminisp3node::phpmyadmin::setup
: Setup phpMyAdminisp3node::postfix
: Setup Postfix on the hostisp3node::postfix::satellite
: Set up this host as postfix satelliteisp3node::postfix::setup
: Setup postfix mail service on this hostisp3node::postfix::ssl
: Configure Postfix SSL Scriptisp3node::postfix::standalone
: Setup this host as standalone postfix MTAisp3node::profile::dns
: Configuration profile for standalone ISP3 Bind DNS serverisp3node::profile::full
: Setup this host with all packages for ISPConfig as single server nodeisp3node::profile::mail
: Configuration profile for standalone ISP3 mail server feat. postfix and dovecot with rspamd optional with mailman ran under additional minimaisp3node::profile::master
: ISPConfig Node Profile for running as multiserver master with panel Will manage minimum required nginx, php and mariadb along with SSL certifisp3node::profile::web
: Configure node for usage as ISP3 Webserver Node with apache2 or nginx public listening mariadb multiple php installations with all suggestedisp3node::pureftpd
: Install and configure pureftpd on this hostisp3node::pureftpd::config
: Configure pureftpd on this host for SSL and ISPConfigisp3node::pureftpd::setup
: Install pureftpdisp3node::quota
: Setup Quota on this hostisp3node::quota::config
: Configures quotaisp3node::quota::setup
: Installs packages required for user quotaisp3node::redis
: Install a local redis server on this hostisp3node::roundcube
: Install and configure Roundcube webmail on this hostisp3node::roundcube::config
: Configure Roundcube Webmailisp3node::roundcube::plugins
: A short summary of the purpose of this classisp3node::roundcube::setup
: Install Roundcube webmail from package managementisp3node::webstats
: Install Webstat toolsisp3node::webstats::setup
: Install webstat tools to the server
Defined types
isp3node::nginx::startpageentry
:isp3node::phpmyadmin::pmanode
: == Class: phpmyadmin::servernode Defines a server usable to phpmyadmin. Can either use exported resources or as a defined resource === Para
Classes
isp3node
From a range of different predefined roles it installs and configures all required software regarding to latest howtoforge perfect server tutorials but does not install ISPConfig itself.
Examples
include isp3node # role is 'master' or taken from hiera isp3node::role
Parameters
The following parameters are available in the isp3node
class.
role
Data type: Enum['full', 'master', 'dns', 'web', 'mail']
The role of the current server in your server setup
Default value: 'master'
isp3node::base
Provieds the base installation required for all ISPConfig server nodes
Examples
include isp3node::base
Parameters
The following parameters are available in the isp3node::base
class.
le_deploycommands
Data type: Optional[Array[String]]
If using Lets Encrypt, commands that need to be executed after deployment of renewed certificates. E.g. restarting a server service
Default value: undef
isp3node::base::hosts
Adds the node itself, all other managed nodes and additional entries from hiera to the hosts file
Examples
include isp3node::base::hostname
class{'isp3node::base::hostname': entries => {'my-host-name': {ensure => present, ip => '1.2.3.4'}}}
Parameters
The following parameters are available in the isp3node::base::hosts
class.
hostname
Data type: String
The servers hostname, defaults to facter
Default value: lookup('isp3node::base::hostname', String, undef, $facts['networking']['hostname'])
domain
Data type: String
The servers domain name, defaults to facter
Default value: lookup('isp3node::base::domain', String, undef, $facts['networking']['domain'])
ip
Data type: String
The servers main IP address, defaults to facter
Default value: lookup('isp3node::base::ip', String, undef, $facts['ipaddress'])
entries
Data type: Optional[Hash[String, Hash]]
Hash of additional entries to add to the hostsfile
Default value: {}
isp3node::base::puppet
Creates a local folder to create lockfiles for certain configuration steps
isp3node::base::shell
Changes the default shell to bash, as required for ispconfig
Examples
include isp3node::base::shell
isp3node::base::software
Beside requirements for ISPC, can further install administrative stuff like default editors
Examples
include isp3node::base::software
Parameters
The following parameters are available in the isp3node::base::software
class.
required
Data type: Array[String]
Required packages as suggested by perfect server setup
additional
Data type: Optional[Array[String]]
Additional packages to install on all systems, e.g. preferred editor
Default value: []
isp3node::base::ssl
Place the certificate from hiera to a known location or obtain from Lets Encrypt and create symlinks. Further replace SSL key and cert of ISPConfig as soon as it is installed. For Lets Encrypt, a list of renewal jobs can be registered to execute e.g. service reloads after certificate renewals.
Examples
include isp3node::base::ssl
Parameters
The following parameters are available in the isp3node::base::ssl
class.
dhparamsize
Data type: Integer
Bitsize of the DH Params file
Default value: 2048
letsencrypt
Data type: Optional[Boolean]
Obtain certificate from letsencrypt
Default value: true
le_deploycommands
Data type: Optional[Array[String]]
Commands to execute after each successful LE certificate deployment
Default value: ['systemctl restart postfix']
email
Data type: Optional[String]
Mail address for notifications from LE CA
Default value: lookup('isp3node::email', undef, undef, undef)
cert
Data type: Optional[String]
Certificate, if LE is not used
Default value: undef
ca
Data type: Optional[String]
CA Cert, if LE is not used
Default value: undef
key
Data type: Optional[String]
Private Key, if LE is not used
Default value: undef
isp3node::bind
Install and configure BIND DNS Server
Examples
include isp3node::bind
isp3node::bind::setup
Installs the current BIND DNS Server from package repository and automatically adds a special daemon for enhanced system entropy (required for DNSSEC) on virtualized nodes.
Examples
include isp3node::bind::setup
Parameters
The following parameters are available in the isp3node::bind::setup
class.
packages
Data type: Array[String]
Package list to install for BIND
entropy_packages
Data type: Array[String]
Packages to install for enhanced system entropy
entropy_service
Data type: String
Name of the entropy daemon to ensure running
boost_entropy
Data type: Optional[Boolean]
Boost entropy on physical server, too (irrelevant on VMs, entropy is forcibly installed there!)
Default value: false
isp3node::dovecot
Installs and configures a dovecot Mailbox server along with RSpamd
Examples
include isp3node::dovecot
isp3node::dovecot::rspamd
Installs and configures RSpamd Further adds a nginx location at '/rspamd/' on the servers FQDN to access the dashboard The dashboards access password is not managed by puppet, as it should be set in ispconfig later
Examples
include isp3node::dovecot::rspamd
Parameters
The following parameters are available in the isp3node::dovecot::rspamd
class.
config
Data type: Hash
Configuration for rspamd
nameserver
Data type: Optional[String]
Package to install as local nameserver. Set to undef if there is already another nameserver present on the system.
Default value: undef
isp3node::dovecot::setup
Install Dovecot Mailbox Server
Examples
include isp3node::dovecot::setup
Parameters
The following parameters are available in the isp3node::dovecot::setup
class.
packages
Data type: Array[String]
dovecot main packages for setting up with ISPConfig
additional_packages
Data type: Array[String]
Additional Required packages for setting up with ISPConfig
isp3node::dovecot::ssl
Configure Dovecot to use local managed SSL Certificates
Examples
include isp3node::dovecot::ssl
isp3node::fail2ban
Install and manage fail2ban on the server node
Examples
include isp3node::fail2ban
isp3node::fail2ban::setup
Installs fail2ban on the host and enables jails as given in the parameters
Examples
include isp3node::fail2ban::setup
Parameters
The following parameters are available in the isp3node::fail2ban::setup
class.
jails
Data type: Array[String]
Predefined jails to apply to f2b, see list: https://forge.puppet.com/puppet/fail2ban/readme#pre-defined-jails
servicejails
Data type: Hash[String, Array[String]]
Jails to apply if the services are installed on the node (see fact isp3node::[servicename]::installed)
custom_jails
Data type: Optional[Hash[String, Hash]]
Custom jail definitions to apply to f2b
Default value: {}
custom_servicejails
Data type: Optional[Hash[String, Hash[String, Hash]]]
Custom jail definitions to apply if the service is installed (see fact isp3node::[servicename]::installed)
Default value: {}
isp3node::jailkit
Install and configure Jailkit on the host
Examples
include isp3node::jailkit
isp3node::jailkit::setup
Downloads the sourcecode archive, builds and installs the deb package
Examples
include isp3node::jailkit::setup
Parameters
The following parameters are available in the isp3node::jailkit::setup
class.
build_packages
Data type: Array[String]
Packages required to build the software
source
Data type: String
source url to download the {file}
file
Data type: String
Filename to download from the {source}
checksum
Data type: String
Expected checksum of the file
checksum_type
Data type: String
Hash type of the checksum
tmpfolder
Data type: String
Folder under /tmp/ that will be created by extracting the archive
isp3node::mailman
Installs and configures mailman along with required nginx locations Further adds links to mailman and list archives to the servers default page
Examples
include isp3node::mailman
isp3node::mailman::config::nginx
Adds locations /cgi-bin/mailman and /pipermail to the hosts FQDN host for access to the mailinglist software and public list archives
Examples
include isp3node::mailman::config::nginx
isp3node::mailman::configure
Create the admin list 'mailman' and add required system mail aliases
Examples
include isp3node::mailman::configure
Parameters
The following parameters are available in the isp3node::mailman::configure
class.
admin_email
Data type: String
Email to authenticate as mail list admin
admin_password
Data type: String
Password to authenticate as mail list admin
isp3node::mailman::setup
Install mailman on the host
Examples
include isp3node::mailman::setup
Parameters
The following parameters are available in the isp3node::mailman::setup
class.
packages
Data type: Array[String]
Required packages to install
isp3node::mariadb
Install, configure and secure MariaDB on this host. Further exports a ISPROOT user from each non-master node to be collected on the master node, which automatically adds them with permission to dbispconfig.*
Examples
include isp3node::mariadb
Parameters
The following parameters are available in the isp3node::mariadb
class.
root_password
Data type: String
Password to set for user root
public
Data type: Boolean
Listen on public IP or bind to 127.0.0.1
Default value: false
isp3node::mariadb::configuration
Enable passwordless login for root user and system config scripts with ispconfig
Examples
include isp3node::mariadb::configuration
Parameters
The following parameters are available in the isp3node::mariadb::configuration
class.
root_password
Data type: Any
DB root user password in cleartext
isp3node::mariadb::connect_master
If this instance is a slave node, this class exports a mariadb user to be created on the master and be used during ISPConfig install and update
If it is the master, it realizes all exported users for creation
Examples
include isp3node::mariadb::connect_master
Parameters
The following parameters are available in the isp3node::mariadb::connect_master
class.
user
Data type: String
username to add to the master DB for access from this host DO NOT USE root, this resource is already defined in mysql core setup and will cause puppet to fail. Beside that, do you want a privileged user root with external access?
password
Data type: String
Password for authentication to master servers database
collect_tag
Data type: String
Default value: 'isp3node-masterdb-slave'
isp3node::mariadb::setup
The isp3node::mariadb::setup class.
Parameters
The following parameters are available in the isp3node::mariadb::setup
class.
root_password
Data type: String
public
Data type: Boolean
additional_packages
Data type: Optional[Array[String]]
Default value: []
isp3node::nginx
Installs nginx and configures required settings for ISPConfig along with a default page on the hosts FQDN having links to public interfaces like Webmail
Examples
include isp3node::nginx
isp3node::nginx::automail
A description of what this class does
Examples
include isp3node::nginx::automail
Parameters
The following parameters are available in the isp3node::nginx::automail
class.
repository
Data type: String
remoteuser
Data type: String
Default value: undef
remotepass
Data type: String
Default value: undef
service_name
Data type: String
Default value: $facts['fqdn']
service_shortname
Data type: String
Default value: $facts['domain']
isp3node::nginx::defaulthost
Places a default startpage on the hosts FQDN containing links to tools for the customers like mailman, webmail, phpmyadmin or ispconfig. RSpamd is not listed as link, because usually not ment for public access.
Examples
include isp3node::nginx::defaulthost
isp3node::nginx::ispproxyhost
Adds a location to the defaultpage to access ISPConfig at /cp/ Only on the master node, because all other hosts aren't allowed to reverse proxy to ISPConfig
Examples
include isp3node::nginx::ispproxyhost
isp3node::nginx::setup
Installs nginx Webserver with some required configuration for ISPConfig and ensures nginx is running while checking Apache to be stopped
Examples
include isp3node::nginx::setup
Parameters
The following parameters are available in the isp3node::nginx::setup
class.
ispsettings
Data type: Hash
Required settings to configure for ISPConfig
isp3node::php
Install and configure the default PHP version on the host applying a defined set of extensions, modules and features
Examples
include isp3node::php
Parameters
The following parameters are available in the isp3node::php
class.
set
Data type: Optional[String]
Defined config set to apply on the node
Default value: undef
isp3node::php::setup
Install PHP with a given set of packages, extensions, features and system settings
Examples
include isp3node::php::setup
Parameters
The following parameters are available in the isp3node::php::setup
class.
version
Data type: String
PHP Version to install and manage
set
Data type: Optional[String]
The configuration set to manage on this host
Default value: undef
sets
Data type: Hash[String, Struct[{ Optional[packages] => Array[String], Optional[extensions] => Hash[String, Hash], Optional[features] => Array[Enum['fpm', 'dev', 'composer', 'pear', 'phpunit']], Optional[settings] => Hash[String, Any] }]]
Config sets defining system packages, extensions and features managed on all isp nodes and on special ones like webserver
isp3node::phpmyadmin
Install phpMyAdmin and configure required nginx settings to access the database explorer on FQDN/phpmyadmin Also add the link to the default page on this host
Examples
include isp3node::phpmyadmin
Parameters
The following parameters are available in the isp3node::phpmyadmin
class.
frontend
Data type: Boolean
Default value: false
isp3node::phpmyadmin::config::nginx
Add nginx locations to access phpMyAdmin
Examples
include isp3node::phpmyadmin::config::nginx
Parameters
The following parameters are available in the isp3node::phpmyadmin::config::nginx
class.
fastcgi_socket
Data type: Any
Socket to use for PHP-FPM connection
Default value: '127.0.0.1:9000'
isp3node::phpmyadmin::setup
A description of what this class does
Examples
include isp3node::phpmyadmin::setup
Parameters
The following parameters are available in the isp3node::phpmyadmin::setup
class.
frontend
Data type: Boolean
Set up a PMA web frontend or just list the server on other frontends
source
Data type: Hash
Source URL to download latest PMA release
blowfish_secret
Data type: String
controluser
Data type: String
controlpass
Data type: String
config_file
Data type: String
Default value: '/usr/share/phpmyadmin/config.inc.php'
isp3node::postfix
Install postfix either as standalone mail transfer agent or satellite system relaying to another postfix and manage its configured ssl certificates
Examples
include isp3node::postfix
Parameters
The following parameters are available in the isp3node::postfix
class.
mode
Data type: Enum['standalone', 'satellite']
Run this postfix standalone or as satellite
Default value: 'standalone'
isp3node::postfix::satellite
Set up this host as postfix satellite
Examples
include isp3node::postfix::satellite
Parameters
The following parameters are available in the isp3node::postfix::satellite
class.
relay
Data type: String
Hostname of Mail Relay server that will accept forwards from this host
isp3node::postfix::setup
Setup postfix mail service on this host
Examples
include isp3node::postfix::setup
Parameters
The following parameters are available in the isp3node::postfix::setup
class.
options
Data type: Hash
Options to apply to the postfix class in addition to hardcoded default options
ispopts
Data type: Hash
Additional options beside optional configuration via $opions, that are required by ispconfigs server setup
Default value: {}
ispopts_mailman
Data type: Optional[Hash]
Additional options that are required, if this host is set up with mailman
Default value: {}
additional_packages
Data type: Optional[Array[String]]
Additional software to install after installing and configuring postfix
Default value: []
ispconf
Data type: Hash
Default value: {}
ispconf_mailman
Data type: Hash
Default value: {}
isp3node::postfix::ssl
Points postfix ssl configuration to the local installed ssl certificate If managed through hiera instead of obtained via LE, also adds a subscription to the certificate file for postfix service restart
Examples
include isp3node::postfix::ssl
isp3node::postfix::standalone
Setup this host as standalone postfix MTA
Examples
include isp3node::postfix::standalone
Parameters
The following parameters are available in the isp3node::postfix::standalone
class.
options
Data type: Hash
Additional options to add to the postifx setup
master_submission
Data type: String
Textblock to write as subnission-block into master.cf
master_smtps
Data type: String
Textblock to write as smtps block into master.cf
isp3node::profile::dns
Configuration profile for standalone ISP3 Bind DNS server
isp3node::profile::full
Setup this host with all packages for ISPConfig as single server node
isp3node::profile::mail
Configuration profile for standalone ISP3 mail server feat. postfix and dovecot with rspamd optional with mailman ran under additional minimal nginx manages SSL certificates for services (optional obtained from LE)
isp3node::profile::master
ISPConfig Node Profile for running as multiserver master with panel Will manage minimum required nginx, php and mariadb along with SSL certificate (optional obtained from LE)
isp3node::profile::web
Configure node for usage as ISP3 Webserver Node with apache2 or nginx public listening mariadb multiple php installations with all suggested packages phpmyadmin webmail jailkit managed ssl certificate for hostname fqdn (optional from LE)
isp3node::pureftpd
Install and configure pureftpd on this host
Examples
include isp3node::pureftpd
isp3node::pureftpd::config
Configure pureftpd on this host for SSL and ISPConfig
Examples
include isp3node::pureftpd::config
Parameters
The following parameters are available in the isp3node::pureftpd::config
class.
tlslevel
Data type: Integer[0, 2]
Enable ftp daemon to offer tls connections: 0->off; 1->on; 2->tls only
isp3node::pureftpd::setup
Installs required packages and ensures, the pureftpd service is running
Examples
include isp3node::pureftpd::setup
Parameters
The following parameters are available in the isp3node::pureftpd::setup
class.
packages
Data type: Array[String]
isp3node::quota
Setup Quota on this host
Examples
include isp3node::quota
isp3node::quota::config
Adds required quota options to fstab and initially enables user quota on the system
Examples
include isp3node::quota::config
Parameters
The following parameters are available in the isp3node::quota::config
class.
mountpoint
Data type: String
Mountpoint in fstab to set quota on
mountopts
Data type: Array[String]
Mount options to apply to this mountpoint. Defaults to minimum options for system partition + required opts for quota
isp3node::quota::setup
Installs packages required for user quota
Examples
include isp3node::quota::setup
Parameters
The following parameters are available in the isp3node::quota::setup
class.
packages
Data type: Array[String]
isp3node::redis
Install a local redis server on this host
Examples
include isp3node::redis
isp3node::roundcube
Install and configure Roundcube webmail on this host
Examples
include isp3node::roundcube
isp3node::roundcube::config
Confiures basic settings in Roundcubes config file and adds required locations to nginx FQDN host to access Webmail at /roundcube and /webmail Further adds a Link to webmail to the default server startpage
Examples
include isp3node::roundcube::config
isp3node::roundcube::plugins
A description of what this class does
Examples
include isp3node::roundcube::plugin::ispconfig
Parameters
The following parameters are available in the isp3node::roundcube::plugins
class.
base_plugins
Data type: Array
ispconfig_repo
Data type: String
ispconfig_plugins
Data type: Array
additional
Data type: Array[String]
Default value: []
remoteuser
Data type: String
Default value: Undef
remotepass
Data type: String
Default value: Undef
api_host
Data type: String
Default value: lookup('isp3node::master')
isp3node::roundcube::setup
Install Roundcube webmail from package management
Examples
include isp3node::roundcube::setup
Parameters
The following parameters are available in the isp3node::roundcube::setup
class.
packages
Data type: Array[String]
List of required packages for Roundcube
isp3node::webstats
Installs Webalizer and AWStats as required for ISPConfig webservers
Examples
include isp3node::webstats
isp3node::webstats::setup
Installs common required packages along with packages required for Webstats and AWStats
Examples
include isp3node::webstats::setup
Parameters
The following parameters are available in the isp3node::webstats::setup
class.
packages
Data type: Array[String]
Common required packages
packages_webalizer
Data type: Array[String]
Software required for webalizer
packages_awstats
Data type: Array[String]
Software required for awstats
awstats_conffile
System path to awstats cronfile, will be cleared as ISPConfig triggers updates itself
webalizer
Data type: Boolean
Install Webalizer or not
Default value: true
awstats
Data type: Boolean
Install AWStats or not
Default value: true
awstats_cronfile
Data type: String
Defined types
isp3node::nginx::startpageentry
The isp3node::nginx::startpageentry class.
Parameters
The following parameters are available in the isp3node::nginx::startpageentry
defined type.
verbose_name
Data type: String
path
Data type: String
order
Data type: Optional[Integer[20, 40]]
Default value: 30
isp3node::phpmyadmin::pmanode
== Class: phpmyadmin::servernode
Defines a server usable to phpmyadmin. Can either use exported resources or as a defined resource
=== Parameters [myserver_name] What to name the server and use for accessing it in phpmyadmin. This can be set to an ip address, hostname or fqdn. It default to the defined resource name [server_group] If used as a defined resource, this will be used to select which servers to install for a specific phpmyadmin instance. [verbose_name] The name which will appear in the list of servers (default: $name) [hide_db] A regex describing the database names to hide (default: '')
=== Examples
phpmyadmin::servernode { "${::fqdn}": myserver_name => $::fqdn, server_group => 'default', }
@@phpmyadmin::servernode { "${::fqdn}": server_group => 'default', }
=== Authors
Justice London jlondon@syrussystems.com
=== Copyright
Copyright 2013 Justice London, unless otherwise noted.
Parameters
The following parameters are available in the isp3node::phpmyadmin::pmanode
defined type.
server_group
Data type: Any
target
Data type: Any
controluser
Data type: Any
controlpass
Data type: Any
myserver_name
Data type: Any
Default value: $name
verbose_name
Data type: Any
Default value: $name
hide_db
Data type: Any
Default value: ''
Changelog
All notable changes to this project will be documented in this file.
Release 0.1.2
Features
- Mail service discovery
Adds an automail app to mailservers to enable server discovery for mailclients
Requires configuration and additional DNS entries in customer DNS zones, see README - Roundcube plugins for ISPConfig
Adds management for Roundcube ISPConfig plugins
Requires configuration, see README
Bugfixes
- nginx Default host not listening on IPv6
Release 0.1.1
Features
- rspamd: add satellite ips to list of trusted local adresses
- postfix:
- set satellite interface to loopback-only
Bugfixes
- only "ensure_resource" of system base software to avoid conficts with other packages as long as they do the same
- mariadb: set correct permissions for remote isproot users in master db
- add installation of PHP base set to profile::dns
- add php-fpm to profile::master
- postfix:
- dont use camptocamp configuration of satellite or mta nodes, too less configurable
- move master_submission and _smtps to postfix standalone, not required on satellite
- check for installed dovecot/mailman before listing corresponding lines in main.cf
- set standalone to listen on public ip
- add ispconfig related options only on standalone, not required for satellite
Release 0.1.0
Features
- Initial release for installing all required services to host server nodes with ISPConfig 3.1
Bugfixes
Known Issues
Dependencies
- puppetlabs-stdlib (>= 6.2.0 < 7.0.0)
- puppetlabs-apt (>= 7.4.0 < 8.0.0)
- puppetlabs-inifile (>= 4.1.0 < 5.0.0)
- puppetlabs-mysql (>= 10.4.0 < 11.0.0)
- camptocamp-postfix (>= 1.10.0 < 2.0.0)
- puppet-redis (>= 5.0.0 < 6.0.0)
- oxc-rspamd (>= 1.1.0 < 2.0.0)
- herculesteam-augeasproviders_mounttab (>= 2.1.0 < 3.0.0)
- puppet-archive (>= 4.4.0 < 5.0.0)
- puppet-fail2ban (>= 3.1.0 < 4.0.0)
- stm-debconf (>= 3.0.0 < 4.0.0)