240 lines
6.1 KiB
Puppet
240 lines
6.1 KiB
Puppet
# Install Apache Solr.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $cores:
|
|
# List of cores to enable.
|
|
#
|
|
# $datadir:
|
|
# Solr data directory. Defaults to "/srv/solr".
|
|
#
|
|
# $webhosts:
|
|
# List of Solr virtual hosts.
|
|
#
|
|
# $htaccess:
|
|
# Source for htaccess file.
|
|
#
|
|
class solr(
|
|
$cores,
|
|
$datadir="/srv/solr",
|
|
$webhosts=undef,
|
|
$htaccess="puppet:///modules/solr/htaccess",
|
|
) {
|
|
|
|
if ! ($::apache::sslserver::user and $::apache::sslserver::group) {
|
|
fail("Must declare apache before solr")
|
|
}
|
|
|
|
require openjdk::jre
|
|
|
|
if ! $solr_package {
|
|
if $::solr_package_latest {
|
|
$solr_package = $::solr_package_latest
|
|
} else {
|
|
fail("Must define \$solr_package or \$solr_package_latest")
|
|
}
|
|
}
|
|
|
|
file { "/usr/local/src/solr.tgz":
|
|
ensure => present,
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
source => "puppet:///files/packages/${solr_package}"
|
|
}
|
|
|
|
util::extract::tar { "/usr/local/share/solr":
|
|
ensure => latest,
|
|
strip => 1,
|
|
source => "/usr/local/src/solr.tgz",
|
|
require => File['/usr/local/src/solr.tgz'],
|
|
}
|
|
|
|
include user::system
|
|
realize(User["solr"], Group["solr"])
|
|
|
|
if $datadir != "/srv/solr" {
|
|
file { "/srv/solr":
|
|
ensure => link,
|
|
target => $datadir,
|
|
}
|
|
}
|
|
|
|
file { $datadir:
|
|
ensure => directory,
|
|
mode => "0770",
|
|
owner => "solr",
|
|
group => "solr",
|
|
}
|
|
|
|
file { [ "/srv/solr/cores",
|
|
"/srv/solr/cores/lib",
|
|
"/srv/solr/index",
|
|
"/srv/solr/run",
|
|
"/srv/solr/run/logs",
|
|
"/srv/solr/run/solr-webapp",
|
|
"/srv/solr/spool", ]:
|
|
ensure => directory,
|
|
mode => "2770",
|
|
owner => "solr",
|
|
group => "solr",
|
|
}
|
|
|
|
file { "/srv/solr/cores/solr.xml":
|
|
ensure => present,
|
|
mode => "0660",
|
|
owner => "solr",
|
|
group => "solr",
|
|
content => template("solr/solr.xml.erb"),
|
|
notify => Service["solr"],
|
|
}
|
|
|
|
file { "/srv/solr/run/start.jar":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/start.jar",
|
|
before => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/contexts":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/contexts",
|
|
before => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/etc":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/etc",
|
|
before => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/etc/jetty.xml":
|
|
ensure => present,
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
source => "puppet:///modules/solr/jetty.xml",
|
|
notify => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/lib":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/lib",
|
|
before => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/resources":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/resources",
|
|
before => Service["solr"],
|
|
}
|
|
file { "/srv/solr/run/webapps":
|
|
ensure => link,
|
|
target => "/usr/local/share/solr/example/webapps",
|
|
before => Service["solr"],
|
|
}
|
|
|
|
file { "/etc/init.d/solr":
|
|
ensure => present,
|
|
mode => "0755",
|
|
owner => "root",
|
|
group => "root",
|
|
content => template("solr/solr.init.erb"),
|
|
notify => Exec["add-service-solr"],
|
|
}
|
|
exec { "add-service-solr":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
command => $::operatingsystem ? {
|
|
"debian" => "update-rc.d solr defaults",
|
|
"ubuntu" => "update-rc.d solr defaults",
|
|
default => "chkconfig --add solr",
|
|
},
|
|
refreshonly => true,
|
|
before => Service["solr"],
|
|
}
|
|
|
|
service { "solr":
|
|
ensure => running,
|
|
enable => true,
|
|
hasstatus => true,
|
|
hasrestart => true,
|
|
}
|
|
|
|
file { "/etc/solr":
|
|
ensure => directory,
|
|
mode => "0755",
|
|
owner => "root",
|
|
group => "root",
|
|
}
|
|
file { "/etc/solr/htpasswd":
|
|
ensure => present,
|
|
mode => "0640",
|
|
owner => "root",
|
|
group => $::apache::sslserver::group,
|
|
}
|
|
|
|
$htdocs = "/usr/local/share/solr/htdocs"
|
|
|
|
file { $htdocs:
|
|
ensure => directory,
|
|
mode => "0755",
|
|
owner => "root",
|
|
group => "root",
|
|
require => Util::Extract::Tar["/usr/local/share/solr"],
|
|
}
|
|
file { "${htdocs}/.htaccess":
|
|
ensure => present,
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
source => $htaccess,
|
|
}
|
|
|
|
if $webhosts {
|
|
include apache::mod::proxy
|
|
include apache::mod::proxy_http
|
|
include apache::mod::rewrite
|
|
|
|
apache::configfile { "solr.conf":
|
|
http => false,
|
|
source => "puppet:///modules/solr/solr-httpd.conf",
|
|
}
|
|
|
|
solr::configwebhost { $webhosts:
|
|
htdocs => $htdocs,
|
|
}
|
|
}
|
|
|
|
if ! $solr_requests_package {
|
|
if $::solr_requests_package_latest {
|
|
$solr_requests_package = $::solr_requests_package_latest
|
|
} else {
|
|
fail("Must define \$solr_requests_package or \$solr_requests_package_latest")
|
|
}
|
|
}
|
|
|
|
if ! $solr_pysolr_package {
|
|
if $::solr_pysolr_package_latest {
|
|
$solr_pysolr_package = $::solr_pysolr_package_latest
|
|
} else {
|
|
fail("Must define \$solr_pysolr_package or \$solr_pysolr_package_latest")
|
|
}
|
|
}
|
|
|
|
python::setup::install { "/usr/local/src/requests":
|
|
source => "puppet:///files/packages/${solr_requests_package}",
|
|
}
|
|
|
|
python::setup::install { "/usr/local/src/pysolr":
|
|
source => "puppet:///files/packages/${solr_pysolr_package}",
|
|
require => Python::Setup::Install["/usr/local/src/requests"],
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Enable solr for virtual host.
|
|
#
|
|
define solr::configwebhost($htdocs) {
|
|
|
|
file { "/srv/www/https/${name}/solr":
|
|
ensure => link,
|
|
target => $htdocs,
|
|
require => File["/srv/www/https/${name}"],
|
|
}
|
|
|
|
}
|