system-config/modules/openstack_project/manifests/ask.pp

149 lines
4.7 KiB
Puppet

# == Class: openstack_project::ask
#
# ask.openstack.org Q&A support website
#
class openstack_project::ask (
$db_name = 'askbotdb',
$db_user = undef,
$db_password = undef,
$slot_name = 'slot0',
$redis_enabled = true,
$redis_port = '6378',
$redis_max_memory = '512m',
$redis_bind = '127.0.0.1',
$redis_password = undef,
$site_ssl_enabled = true,
$site_ssl_cert_file_contents = undef,
$site_ssl_key_file_contents = undef,
$site_ssl_chain_file_contents = undef,
$site_ssl_cert_file = '/etc/ssl/certs/ask.openstack.org.pem',
$site_ssl_key_file = '/etc/ssl/private/ask.openstack.org.key',
$site_ssl_chain_file = '/etc/ssl/certs/ask.openstack.org_ca.pem',
$site_name = 'ask.openstack.org',
$solr_version = '4.7.2',
) {
# solr search engine
class { 'solr':
mirror => 'http://apache.mesi.com.ar/lucene/solr',
version => $solr_version,
cores => [ 'core-default', 'core-en', 'core-zh' ],
}
file { '/usr/share/solr/core-en/conf/schema.xml':
ensure => present,
content => template('openstack_project/askbot/schema.en.xml.erb'),
replace => true,
owner => 'jetty',
group => 'jetty',
mode => '0644',
require => File['/usr/share/solr/core-zh/conf'],
}
file { '/usr/share/solr/core-zh/conf/schema.xml':
ensure => present,
content => template('openstack_project/askbot/schema.cn.xml.erb'),
replace => true,
owner => 'jetty',
group => 'jetty',
mode => '0644',
require => File['/usr/share/solr/core-en/conf'],
}
# deploy smartcn Chinese analyzer from solr contrib/analysys-extras
file { "/usr/share/solr/WEB-INF/lib/lucene-analyzers-smartcn-${solr_version}.jar":
ensure => present,
replace => 'no',
source => "/tmp/solr-${solr_version}/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-${solr_version}.jar",
owner => 'root',
group => 'root',
mode => '0644',
require => Exec['copy-solr'],
}
# postgresql database
class { 'postgresql::server': }
postgresql::server::db { $db_name:
user => $db_user,
password => postgresql_password($db_user, $db_password),
}
# redis cache
class { 'redis':
redis_port => $redis_port,
redis_max_memory => $redis_max_memory,
redis_bind => $redis_bind,
redis_password => $redis_password,
}
# Notice:
# Disable all puppet-askbot related resources until refactored
# askbot modules not approved.
#
# # apache http server
# include apache
#
# # askbot
# class { 'askbot':
# redis_enabled => $redis_enabled,
# db_provider => 'pgsql',
# require => Postgresql::Server::Db[$db_name],
# }
#
# # custom askbot theme from openstack-infra/askbot-theme repo
#
# vcsrepo { "/srv/askbot-sites/${slot_name}/themes":
# ensure => latest,
# provider => git,
# revision => 'master',
# source => 'https://git.openstack.org/openstack-infra/askbot-theme',
# require => [
# Class['askbot'], File["/srv/askbot-sites/${slot_name}"],
# Package['git']
# ],
# notify => [
# Exec["theme-bundle-install-${slot_name}"],
# Exec["theme-bundle-compile-${slot_name}"],
# ],
# }
#
# askbot::compass { $slot_name:
# }
#
# askbot::site { $site_name:
# slot_name => $slot_name,
# askbot_debug => false,
# custom_theme_enabled => true,
# custom_theme_name => 'os',
# redis_enabled => $redis_enabled,
# redis_port => $redis_port,
# redis_max_memory => $redis_max_memory,
# redis_bind => $redis_bind,
# redis_password => $redis_password,
# site_ssl_enabled => true,
# 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,
# db_provider => 'pgsql',
# db_name => $db_name,
# db_user => $db_user,
# db_password => $db_password,
# require => [ Class['redis'], Class['askbot'] ],
# }
pgsql_backup::backup { $db_name:
database_user => $db_user,
database_password => $db_password,
require => Postgresql::Server::Db[$db_name],
}
include bup
bup::site { 'rs-ord':
backup_user => 'bup-ask',
backup_server => 'ci-backup-rs-ord.openstack.org',
}
}