## init.pp
class digg-solr::base {
include sun-java
package {
"digg-solr":
ensure => $digg_solr_version ? {
"" => installed,
default => $digg_solr_version
},
require => Package["sun-java6-jdk"];
"digg-solr-plugins":
ensure => $digg_solr_plugins_version ? {
"" => installed,
default => $digg_solr_plugins_version
},
require => Package["digg-solr"],
notify => Service["jetty"];
}
file {
"/usr/local/solr":
ensure => directory,
owner => "search",
group => "search",
require => [ Package["digg-solr"], User["search"] ];
["/usr/local/solr/solr",
"/usr/local/solr/solr/conf",
"/usr/local/solr/solr/bin"]:
owner => "search",
group => "search",
ensure => directory,
require => Package["digg-solr"];
["/usr/local/solr/solr/lib",
"/usr/local/solr/solr/logs"]:
owner => "search",
group => "search",
mode => 0664,
recurse => true,
require => [ Package["digg-solr"], User["search"] ];
"digg-solr::schema":
owner => "search",
group => "search",
path => "/usr/local/solr/solr/conf/schema.xml",
source => "puppet:///digg-solr/schema.xml",
notify => Service["jetty"];
"digg-solr::scripts":
owner => "search",
group => "search",
path => "/usr/local/solr/solr/conf/scripts.conf",
source => "puppet:///digg-solr/scripts.conf",
notify => Service["solr-rsync"];
"/home/search/.ssh":
owner => "search",
group => "search",
mode => 0755,
ensure => directory,
require => User["search"];
"/etc/init.d/jetty":
mode => 0755,
source => "puppet:///digg-solr/jetty.init";
"/etc/default/jetty":
source => "puppet:///digg-solr/jetty.default",
notify => Service["jetty"];
"digg-solr::solrconfig.xml":
owner => "search",
group => "search",
path => "/usr/local/solr/solr/conf/solrconfig.xml",
ensure => present,
notify => Service["jetty"];
"/etc/init.d/solr-rsync":
mode => 0755,
source => "puppet:///digg-solr/solr-rsync.init";
}
group {
"search":
gid => 250,
ensure => present;
}
user {
"search":
ensure => present,
uid => 250,
gid => "search",
home => "/home/search",
managehome => true,
shell => "/bin/bash",
require => Group["search"];
}
cron {
"digg-solr::snapshot-cleaner":
command => "/usr/local/solr/solr/bin/snapcleaner -D 7",
ensure => absent,
hour => 0,
minute => 0,
user => "search",
require => [ Package["digg-solr"], User["search"] ];
"digg-solr::snapshot-puller":
command => "/usr/local/solr/solr/bin/snappuller; /usr/local/solr/solr/bin/snapinstaller",
ensure => absent,
minute => "*/5",
user => "search",
require => [ Package["digg-solr"], User["search"] ];
}
service {
"jetty":
enable => true,
ensure => running,
hasstatus => true,
status => "/etc/init.d/jetty check";
"solr-rsync":
enable => false,
ensure => stopped,
pattern => "rsync --daemon";
}
exec {
"digg-solr::set-ownership":
command => "/bin/chown -R search:search /usr/local/solr",
require => Package["digg-solr"];
}
}
##master.pp
class digg-solr::master inherits digg-solr::base {
ssh_authorized_key {
"digg-solr::slave_ssh_key":
ensure => present,
key => "AAAAB3NzaC1yc2EAAAABIwAAAQEAqzASnbVssP5cSMy0Yr5lawszrVVXm8IRUfb9Frxd4WUGQKFqPCiyG6B3HtGm30v0iqzvEh0sEy0MVRgOxxlY8K9QdN+FoDQTfpXbm5ceDlWVjaCh35lzPOLZCpiWPy9uorJWpzwlZDrem1EluSH0aUOk/UttAE/qvhmHwHVRbTzfKCrWtjtXDkma3drKVR9ne5H8xuy4xuVxZmPGy+iVfwfBRBpvmNGUdgDec9JpDHwJy6jG17oXFBnCaYlRp5FDTu40PvYuIbS3hkcPmg03TjwHZTYtcf+8L7YrQYy08zpHPXuZk4O3noXyH0gQG+IQGgnhSgm3KV6hW0KUbbJ9kw==",
type => rsa,
user => "search",
require => User["search"];
}
file {
"/usr/local/solr/solr/status":
owner => "search",
group => "search",
recurse => true,
ensure => directory;
"/usr/local/solr/solr/logs/rsyncd.pid":
owner => search,
group => search,
mode => 0664;
["/usr/local/solr/solr/logs/snappuller.log",
"/usr/local/solr/solr/logs/snappuller.status"]:
ensure => absent,
notify => Service["jetty"];
}
exec {
"digg-solr::master::rsyncd-enable":
command => "/usr/local/solr/solr/bin/rsyncd-enable",
creates => "/usr/local/solr/solr/logs/rsyncd-enabled",
cwd => "/usr/local/solr/solr",
require => Package["digg-solr"];
"digg-solr::master::snappuller-disable":
command => "/usr/local/solr/solr/bin/snappuller-disable",
onlyif => "/usr/bin/test -f /usr/local/solr/solr/logs/snappuller-enabled",
cwd => "/usr/local/solr/solr",
require => Package["digg-solr"];
}
Cron["digg-solr::snapshot-cleaner"] {
ensure => present
}
Service["solr-rsync"] {
enable => true,
ensure => running,
require => [ File["/etc/init.d/solr-rsync"], Exec["digg-solr::master::rsyncd-enable"] ]
}
File["digg-solr::solrconfig.xml"] {
source => "puppet:///digg-solr/solrconfig.xml.master"
}
}
## --debug --trace output
err: Could not create digg-solr::slave_ssh_key: user search doesn't exist
/usr/lib/ruby/1.8/puppet/type/ssh_authorized_key.rb:43:in `expand_path'
/usr/lib/ruby/1.8/puppet/type/ssh_authorized_key.rb:43:in `should'
/usr/lib/ruby/1.8/puppet/type.rb:560:in `should'
/usr/lib/ruby/1.8/puppet/type/ssh_authorized_key.rb:80:in `validate'
/usr/lib/ruby/1.8/puppet/type.rb:2367:in `initialize'
/usr/lib/ruby/1.8/puppet/type.rb:1129:in `new'
/usr/lib/ruby/1.8/puppet/type.rb:1129:in `create'
/usr/lib/ruby/1.8/puppet/transportable.rb:91:in `to_type'
/usr/lib/ruby/1.8/puppet/transportable.rb:198:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:195:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:204:in `call'
/usr/lib/ruby/1.8/puppet/transportable.rb:204:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:195:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:204:in `call'
/usr/lib/ruby/1.8/puppet/transportable.rb:204:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:126:in `each'
/usr/lib/ruby/1.8/puppet/transportable.rb:195:in `to_catalog'
/usr/lib/ruby/1.8/puppet/transportable.rb:210:in `call'
/usr/lib/ruby/1.8/puppet/transportable.rb:210:in `to_catalog'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:172:in `getconfig'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:245:in `run'
/usr/lib/ruby/1.8/puppet/util.rb:425:in `thinmark'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/1.8/benchmark.rb:307:in `realtime'
/usr/lib/ruby/1.8/puppet/util.rb:424:in `thinmark'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:244:in `run'
/usr/lib/ruby/1.8/sync.rb:229:in `synchronize'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:237:in `run'
/usr/sbin/puppetd:417
warning: Not using cache on failed catalog
warning: Configuration could not be instantiated: user search doesn't exist