Skip to content
Browse files

cook-39, initial commit solr cookbook, need testing.

  • Loading branch information...
1 parent a449dc2 commit 90a4fcaf7f0da5c04fdb1f27658e78bb26a3236c @jtimberman jtimberman committed Mar 30, 2009
View
63 solr/README.rdoc
@@ -0,0 +1,63 @@
+= DESCRIPTION:
+
+Sets up user and environment for running solr instances.
+
+= REQUIREMENTS:
+
+== Platform and Application Environment:
+
+Tested on Ubuntu 8.10. May work on other platforms, esp Ubuntu/Debian.
+
+Requires solr installed, such as a vendor plugin for a Rails application. Assumes 'start.jar' exists. Also requires ssh keys for solr user. See usage.
+
+== Cookbooks:
+
+Opscode cookbooks, http://github.com/opscode/cookbooks/tree/master:
+
+* capistrano (capistrano_setup)
+* java
+* runit (runit_service)
+
+= ATTRIBUTES:
+
+No specific attributes are used. See Parameters under usage.
+
+= USAGE:
+
+To create a solr instance for an application, use the solr_instance define:
+
+ solr_instance "my_app"
+
+The recipe assumes that id_rsa ssh key pair has been created for the solr user. The files should be located in the cookbook where the solr_instance is used (for example a site-cookbook)
+
+== Parameters:
+
+The following parameters are prototyped for usage.
+
+* params[:path] - Location where this instance lives.
+* params[:xms] - Initial java heap size.
+* params[:xmx] - Maximum java heap size.
+* params[:user] - User for the instance process.
+* params[:uid] - UID for user.
+* params[:group] - Group for the instance process.
+* params[:gid] - GID for group.
+* params[:type] - master or false. Not currently used.
+
+Optionally specify a cookbook where the ssh keypair is located, otherwise generate keys and put the files in the solr cookbook. Empty files are located there for placeholders.
+
+= LICENSE and AUTHOR:
+
+Author:: Joshua Timberman (<joshua@opscode.com>)
+Copyright:: 2009, Opscode, Inc
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
View
25 solr/attributes/solr.rb
@@ -0,0 +1,25 @@
+#
+# Cookbook Name:: solr
+# Attributes:: solr
+#
+# Copyright 2008, Opscode, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+solr Mash.new unless attribute?("solr")
+
+solr[:user] = 'solr' unless solr.has_key?(:user)
+solr[:uid] = 551 unless solr.has_key?(:uid)
+solr[:group] = 'solr' unless solr.has_key?(:group)
+solr[:gid] = 551 unless solr.has_key?(:gid)
View
66 solr/definitions/solr_instance.rb
@@ -0,0 +1,66 @@
+#
+# Cookbook Name:: solr
+# Definition:: solr_instance
+#
+# Copyright 2009, Opscode, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+define :solr_instance, :path => "/srv", :xms => "128M", :xmx => "1024M", :type => "master" do
+ include_recipe "solr"
+
+ cap_setup "#{params[:name]}" do
+ path "#{params[:path]}/#{params[:name]}"
+ appowner "solr"
+ end
+
+ %w{ solr solr/data }.each do |dir|
+ directory "#{params[:path]}/#{params[:name]}/#{dir}" do
+ owner node[:solr][:user]
+ group node[:solr][:group]
+ mode 0755
+ end
+ end
+
+ %w{ bin conf }.each do |dir|
+ directory "#{params[:path]}/#{params[:name]}/#{dir}" do
+ owner "root"
+ group "nogroup"
+ mode 0755
+ end
+ end
+
+ runit_service params[:name]
+
+ # directory for ssh, files for ssh keys
+ directory "#{params[:path]}/#{params[:name]}/.ssh" do
+ owner node[:solr][:user]
+ group node[:solr][:group]
+ mode 0700
+ end
+
+ %w{ id_rsa id_rsa.pub authorized_keys }.each do |ssh_file|
+ remote_file "#{params[:path]}/#{params[:name]}/.ssh/#{ssh_file}" do
+ source ssh_file
+ owner node[:solr][:user]
+ group node[:solr][:group]
+ mode 0600
+ if params[:cookbook]
+ cookbook params[:cookbook]
+ else
+ cookbook "solr"
+ end
+ end
+ end
+end
View
0 solr/files/default/authorized_keys
No changes.
View
0 solr/files/default/id_rsa
No changes.
View
0 solr/files/default/id_rsa.pub
No changes.
View
36 solr/recipes/default.rb
@@ -0,0 +1,36 @@
+#
+# Cookbook Name:: solr
+# Recipe:: default
+#
+# Copyright 2009, Opscode, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include_recipe "java"
+include_recipe "capistrano"
+include_recipe "runit"
+
+group node[:solr][:group] do
+ gid node[:solr][:gid]
+ action :create
+end
+
+user node[:solr][:user] do
+ comment "Solr replication"
+ home "/srv/solr"
+ shell "/bin/bash"
+ uid node[:solr][:uid]
+ gid node[:solr][:gid]
+ action :create
+end
View
2 solr/templates/default/sv-solr-log-run.erb
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec svlogd -tt ./main
View
8 solr/templates/default/sv-solr-run.erb
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+export JAVA_HOME=/usr/java/jdk
+cd <%= @params[:path] %>/current
+exec 2>&1
+exec \
+ chpst -u <%= @node[:solr][:user] %> /usr/bin/java -Xms<%= @params[:xms] %> -Xmx<%= @params[:xmx] %> \
+ -jar start.jar

0 comments on commit 90a4fca

Please sign in to comment.
Something went wrong with that request. Please try again.