Skip to content

Latest commit

 

History

History
1672 lines (914 loc) · 31.5 KB

REFERENCE.md

File metadata and controls

1672 lines (914 loc) · 31.5 KB

Reference

Table of Contents

Classes

Defined types

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: ''