puppet/abusesa/manifests/search.pp

160 lines
4.1 KiB
Puppet

# Install AbuseSA Search.
#
# === Parameters
#
# $plugin:
# Analysis plugin file.
#
# $solrurl:
# URL to sorl.
#
# $logourl:
# Path to logo image.
#
# $cssfile:
# Path to css file.
#
# $webhosts:
# List of search virtual hosts.
#
class abusesa::search(
$plugin='solr-4.10.2-analysis-codenomicon.jar',
$solrurl="https://${::homename}/solr/generic/",
$logourl='img/Codenomicon_logo_small.png',
$cssfile='css/code.css',
$webhosts=undef,
) {
if ! $abusesa_search_package {
if $::abusesa_search_package_latest {
$abusesa_search_package = $::abusesa_search_package_latest
} else {
fail('Must define $abusesa_search_package or $abusesa_search_package_latest')
}
}
file { '/usr/local/src/abusesa-search.tar.gz':
ensure => present,
mode => '0644',
owner => 'root',
group => 'root',
source => "puppet:///files/packages/${abusesa_search_package}",
}
util::extract::tar { '/usr/local/src/abusesa-search':
ensure => latest,
strip => '1',
source => '/usr/local/src/abusesa-search.tar.gz',
require => File['/usr/local/src/abusesa-search.tar.gz'],
before => Python::Setup::Install['/usr/local/src/abusesa-search'],
}
python::setup::install { '/usr/local/src/abusesa-search': }
package { 'python-BeautifulSoup':
ensure => installed,
name => $::operatingsystem ? {
'debian' => 'python-beautifulsoup',
'ubuntu' => 'python-beautifulsoup',
default => 'python-BeautifulSoup',
}
}
file { '/srv/solr/cores/generic':
ensure => directory,
mode => '0660',
owner => 'solr',
group => 'solr',
source => '/usr/local/src/abusesa-search/config/solr/cores/generic',
recurse => true,
purge => true,
force => true,
require => Util::Extract::Tar['/usr/local/src/abusesa-search'],
notify => Service['solr'],
}
file { '/srv/solr/cores/generic/conf/_rest_managed.json':
ensure => present,
mode => '0660',
owner => 'solr',
group => 'solr',
before => Service['solr'],
}
file { '/srv/solr/cores/lib/solr-analysis-codenomicon.jar':
ensure => present,
mode => '0660',
owner => 'solr',
group => 'solr',
source => "/usr/local/src/abusesa-search/bin/${plugin}",
require => Util::Extract::Tar['/usr/local/src/abusesa-search'],
notify => Service['solr'],
}
file { '/srv/solr/cores/lib/commons-net-3.1.jar':
ensure => present,
mode => '0660',
owner => 'solr',
group => 'solr',
source => '/usr/local/src/abusesa-search/search/analysis-codenomicon/lib/commons-net-3.1.jar',
require => Util::Extract::Tar['/usr/local/src/abusesa-search'],
notify => Service['solr'],
}
file { '/srv/solr/cores/lib/java-ipv6-0.8.jar':
ensure => present,
mode => '0660',
owner => 'solr',
group => 'solr',
source => '/usr/local/src/abusesa-search/search/analysis-codenomicon/lib/java-ipv6-0.8.jar',
require => Util::Extract::Tar['/usr/local/src/abusesa-search'],
notify => Service['solr'],
}
$htdocs = $::operatingsystem ? {
'ubuntu' => '/usr/local/share/abusesa-search/htdocs',
default => '/usr/share/abusesa-search/htdocs',
}
file { "${htdocs}/js/Config.js":
ensure => present,
mode => '0644',
owner => 'root',
group => 'root',
content => template('abusesa/search/Config.js.erb'),
require => Python::Setup::Install['/usr/local/src/abusesa-search'],
}
if $webhosts {
abusesa::search::configwebhost { $webhosts:
htdocs => $htdocs,
}
}
}
# Enable AbuseSA Search for virtual host.
#
define abusesa::search::configwebhost($htdocs) {
if ! defined(File["/srv/www/https/${name}/abusesa"]) {
file { "/srv/www/https/${name}/abusesa":
ensure => directory,
mode => '0755',
owner => 'root',
group => 'root',
}
file { "/srv/www/https/${name}/abusesa/index.html":
ensure => present,
mode => '0644',
owner => 'root',
group => 'root',
content => '',
}
}
file { "/srv/www/https/${name}/abusesa/search":
ensure => link,
target => $htdocs,
}
}