145 lines
5.6 KiB
Puppet
145 lines
5.6 KiB
Puppet
# == Class: askbot
|
|
# This class sets up an askbot site
|
|
#
|
|
# == Parameters
|
|
# - $www_group: group name for web writeable directories like upfiles and log
|
|
# - $www_user: user name for web process
|
|
# - $askbot_debug: set to true to enable askbot debug mode
|
|
# - $dist_root: root directory of distribution releases
|
|
# - $site_root: root directory of site config and assets
|
|
# - $site_name: fqdn of askbot site
|
|
#
|
|
# Source repository:
|
|
# - askbot_repo: git repository of askbot source files
|
|
# - askbot_revision: branch of askbot repo used for deployment
|
|
#
|
|
# Custom askbot theme settings:
|
|
# - $custom_theme_enabled: set to true to enable custom themes, default: false
|
|
# - $custom_theme_name: name of custom theme set to default
|
|
#
|
|
# Redis configuration:
|
|
# - $redis_enabled: set to true to use redis as cache backend
|
|
# - $redis_prefix: redis key prefix (required for multi-site setups)
|
|
# - $redis_port: port of redis service
|
|
# - $redis_max_memory: memory allocation for redis
|
|
# - $redis_bind: bind address of redis service
|
|
# - $redis_password: password required for redis connection
|
|
#
|
|
# SSL Settings:
|
|
# - $site_ssl_enabled: set to true for SSL based vhost
|
|
# - $site_ssl_cert_file_contents: x509 certificate in pem format
|
|
# - $site_ssl_key_file_contents: the key of site certificate in pem format
|
|
# - $site_ssl_chain_file_contents: the issuer certs of site cert (optional)
|
|
# - $site_ssl_cert_file: file name of site certificate
|
|
# - $site_ssl_key_file: file name of the site certificate's key file
|
|
# - $site_ssl_chain_file: file name of the issuer certificates
|
|
#
|
|
# Email configuration:
|
|
# - $smtp_host: hostname of smtp service used for email sending
|
|
# - $smtp_port: port of smtp service
|
|
#
|
|
# Database provider and connection details:
|
|
# - $db_provider: database provider (mysql or pgsql)
|
|
# - $db_name: database name
|
|
# - $db_user: user name required for db connection
|
|
# - $db_password: password required for db connection
|
|
# - $db_host: database host
|
|
#
|
|
# Solr support:
|
|
# - solr_enabled: set true to use solr as a search indexing engine
|
|
#
|
|
# == Actions
|
|
#
|
|
class askbot (
|
|
$db_password,
|
|
$redis_password,
|
|
$dist_root = '/srv/dist',
|
|
$site_root = '/srv/askbot-site',
|
|
$askbot_revision = 'master',
|
|
$askbot_repo = 'https://github.com/ASKBOT/askbot-devel.git',
|
|
$www_group = 'www-data',
|
|
$www_user = 'www-data',
|
|
$db_provider = 'mysql',
|
|
$db_name = 'askbotdb',
|
|
$db_user = 'askbot',
|
|
$db_host = 'localhost',
|
|
$askbot_debug = false,
|
|
$redis_enabled = false,
|
|
$redis_prefix = 'askbot',
|
|
$redis_port = 6378,
|
|
$redis_max_memory = '256m',
|
|
$redis_bind = '127.0.0.1',
|
|
$site_ssl_enabled = false,
|
|
$site_ssl_cert_file_contents = '',
|
|
$site_ssl_key_file_contents = '',
|
|
$site_ssl_chain_file_contents = '',
|
|
$site_ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem',
|
|
$site_ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key',
|
|
$site_ssl_chain_file = '',
|
|
$site_name = 'askbot',
|
|
$custom_theme_enabled = false,
|
|
$custom_theme_name = '',
|
|
$solr_enabled = false,
|
|
$smtp_port = '25',
|
|
$smtp_host = 'localhost'
|
|
) {
|
|
|
|
class { 'askbot::install':
|
|
db_provider => $db_provider,
|
|
dist_root => $dist_root,
|
|
askbot_repo => $askbot_repo,
|
|
askbot_revision => $askbot_revision,
|
|
redis_enabled => $redis_enabled,
|
|
solr_enabled => $solr_enabled,
|
|
}
|
|
|
|
if !defined(File[$dist_root]) {
|
|
file { $dist_root:
|
|
ensure => directory,
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => '0755',
|
|
}
|
|
}
|
|
|
|
vcsrepo { "${dist_root}/askbot":
|
|
ensure => latest,
|
|
provider => git,
|
|
revision => $askbot_revision,
|
|
source => $askbot_repo,
|
|
require => [ File[$dist_root], Package['git'] ],
|
|
}
|
|
|
|
class { 'askbot::config':
|
|
site_root => $site_root,
|
|
dist_root => $dist_root,
|
|
www_group => $www_group,
|
|
db_provider => $db_provider,
|
|
db_name => $db_name,
|
|
db_user => $db_user,
|
|
db_password => $db_password,
|
|
db_host => $db_host,
|
|
askbot_debug => $askbot_debug,
|
|
redis_enabled => $redis_enabled,
|
|
redis_prefix => $redis_prefix,
|
|
redis_port => $redis_port,
|
|
redis_max_memory => $redis_max_memory,
|
|
redis_bind => $redis_bind,
|
|
redis_password => $redis_password,
|
|
site_ssl_enabled => $site_ssl_enabled,
|
|
site_ssl_cert_file_contents => $site_ssl_cert_file_contents,
|
|
site_ssl_key_file_contents => $site_ssl_key_file_contents,
|
|
site_ssl_chain_file_contents => $site_ssl_chain_file_contents,
|
|
site_ssl_cert_file => $site_ssl_cert_file,
|
|
site_ssl_key_file => $site_ssl_key_file,
|
|
site_ssl_chain_file => $site_ssl_chain_file,
|
|
site_name => $site_name,
|
|
custom_theme_enabled => $custom_theme_enabled,
|
|
custom_theme_name => $custom_theme_name,
|
|
solr_enabled => $solr_enabled,
|
|
smtp_port => $smtp_port,
|
|
smtp_host => $smtp_host,
|
|
require => [ Vcsrepo["${dist_root}/askbot"], Class['askbot::install'] ],
|
|
}
|
|
}
|