Initial version of solr module

This commit is contained in:
Ossi Salmi 2013-05-31 12:26:59 +03:00
parent 317780be0f
commit 0630f22306
7 changed files with 321 additions and 0 deletions

18
solr/Makefile Normal file
View file

@ -0,0 +1,18 @@
include $(CURDIR)/../Makefile.inc
VERSION = 4.2.1
TARGET = solr-$(VERSION).tgz
SOURCE = http://ftp.funet.fi/pub/mirrors/apache.org/lucene/solr/$(VERSION)/solr-$(VERSION).tgz
all: download manifest
download: $(PACKAGES)/$(TARGET)
manifest: $(MANIFESTS)/solr.pp
$(PACKAGES)/$(TARGET):
@umask 022; echo $@; \
test -f $@ || curl -o $@ $(SOURCE)
$(MANIFESTS)/solr.pp: $(PACKAGES)/$(TARGET)
@umask 022; echo $@; \
echo '$$solr_package_latest = "$(TARGET)"' > $@

10
solr/files/.htaccess Normal file
View file

@ -0,0 +1,10 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://localhost:8080/solr/$1 [P,L]
</IfModule>
AuthType Basic
AuthUserFile /etc/solr/htpasswd
AuthName "Password Required"
require valid-user

10
solr/files/htaccess Normal file
View file

@ -0,0 +1,10 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://localhost:8983/solr/$1 [P,L]
</IfModule>
AuthType Basic
AuthUserFile /etc/solr/htpasswd
AuthName "Password Required"
require valid-user

View file

@ -0,0 +1,3 @@
<Directory "/srv/www/https/*/solr">
AllowOverride All
</Directory>

88
solr/files/solr.init Normal file
View file

@ -0,0 +1,88 @@
#!/bin/sh
# chkconfig: 2345 90 10
# description: Solr Server
# processname: solr
### BEGIN INIT INFO
# Provides: solr
# Required-Start: $local_fs $network $syslog
# Should-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Solr server
# Description: Solr server
### END INIT INFO
SOLRUSER=solr
SOLRPATH="/srv/solr/run"
CONFIGPATH="/srv/solr/cores"
MEMORYLIMIT="-Xms1024M -Xmx4096M"
if [ `id -u` != "0" ]; then
echo "This script must be run with root privileges." && exit 1
fi
if [ ! -e "${SOLRPATH}/start.jar" ]; then
echo "Failed to find Solr jar file: ${SOLRPATH}/start.jar"
echo "Check /etc/init.d/solr file for correct settings."
RETVAL=1
exit 1
fi
if [ ! -e "${CONFIGPATH}/solr.xml" ]; then
echo "Failed to find Solr config files: ${CONFIGPATH}/solr.xml"
echo "Check /etc/init.d/solr file for correct settings."
RETVAL=1
exit 1
fi
start_solr() {
# Check to see if Solr is running
pgrep -u solr -f start.jar > /dev/null
RUNNING=$?
if [ $RUNNING -eq 0 ]; then
echo "[FAILED]"
echo
echo "Reason: Solr already running"
RETVAL=1
exit 1
fi
# Start Solr
echo "Starting Solr"
COMMAND="java -Dsolr.solr.home=${CONFIGPATH} ${MEMORYLIMIT} -jar start.jar > solr.log 2>&1 &"
su -s /bin/sh - ${SOLRUSER} -c "umask 007; cd ${SOLRPATH}; ${COMMAND}"
}
stop_solr() {
echo -n "Stopping Solr: "
pkill -u solr -f start.jar
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed"
fi
}
case "$1" in
start)
start_solr
;;
stop)
stop_solr
;;
restart)
stop_solr
sleep 2
start_solr
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0

182
solr/manifests/init.pp Normal file
View file

@ -0,0 +1,182 @@
# Install Apache Solr.
#
class solr {
if !$solr_package {
if $solr_package_latest {
$solr_package = $solr_package_latest
} else {
fail("Must define \$solr_package or \$solr_package_latest")
}
}
if !$solr_core {
fail("Must define \$solr_core")
}
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 $solr_datadir {
file { $solr_datadir:
ensure => directory,
mode => "0770",
owner => "solr",
group => "solr",
require => User["solr"],
}
file { "/srv/solr":
ensure => link,
target => $solr_datadir,
require => File[$solr_datadir],
}
} else {
file { "/srv/solr":
ensure => directory,
mode => "0770",
owner => "solr",
group => "solr",
require => User["solr"],
}
}
file { [ "/srv/solr/cores",
"/srv/solr/cores/lib",
"/srv/solr/index",
"/srv/solr/run",
"/srv/solr/run/solr-webapp",
"/srv/solr/spool", ]:
ensure => directory,
mode => "0770",
owner => "solr",
group => "solr",
require => File["/srv/solr"],
}
file { "/srv/solr/cores/solr.xml"
ensure => present,
mode => "0660",
owner => "solr",
group => "solr",
content => template("solr/solr.xml.erb"),
require => File["/srv/solr/cores"],
}
file { "/srv/solr/run/start.jar":
ensure => link,
target => "/usr/local/share/solr/example/start.jar"
require => File["/srv/solr/run"],
}
file { "/srv/solr/run/contexts":
ensure => link,
target => "/usr/local/share/solr/example/contexts"
require => File["/srv/solr/run"],
}
file { "/srv/solr/run/etc":
ensure => link,
target => "/usr/local/share/solr/example/etc"
require => File["/srv/solr/run"],
}
file { "/srv/solr/run/lib":
ensure => link,
target => "/usr/local/share/solr/example/lib"
require => File["/srv/solr/run"],
}
file { "/srv/solr/run/webapps":
ensure => link,
target => "/usr/local/share/solr/example/webapps"
require => File["/srv/solr/run"],
}
file { "/etc/init.d/solr":
ensure => present,
mode => "0755",
owner => "root",
group => "root",
source => "puppet:///modules/solr/solr.init",
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":
enable => 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,
require => File["/etc/solr"],
}
$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 => [ "puppet:///files/solr/htaccess",
"puppet:///modules/solr/htaccess", ],
require => File[$htdocs],
}
define configwebhost($htdocs) {
file { "/srv/www/https/${name}/solr":
ensure => link,
target => $htdocs,
require => File["/srv/www/https/${name}"],
}
}
if $solr_webhosts {
apache::configfile { "solr.conf":
http => false,
source => "puppet:///modules/solr/solr-httpd.conf",
}
configwebhost { $solr_webhosts:
htdocs => $htdocs,
}
}
}

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false" sharedLib="lib">
<cores adminPath="/admin/cores">
<% @solr_core.each do |core| -%>
<core name="<%= core %>" instanceDir="<%= core %>">
<property name="dataDir" value="/srv/solr/index/<%= core %>" />
</core>
<% end -%>
</cores>
</solr>