Created
June 21, 2012 18:24
-
-
Save BanzaiMan/2967567 to your computer and use it in GitHub Desktop.
Enabling sphinx 2.0.4 on Engine Yard Cloud
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Cookbook Name:: sphinx | |
# Recipe:: default | |
# | |
# Set your application name here | |
appname = "todo" | |
# Uncomment the flavor of sphinx you want to use | |
flavor = "thinking_sphinx" | |
#flavor = "ultrasphinx" | |
# If you want to install on a specific utility instance rather than | |
# all application instances, uncomment and set the utility instance | |
# name here. Note that if you use a utility instance, your very first | |
# deploy may fail because the initial database migration will not have | |
# run by the time this executes on the utility instance. If that occurs | |
# just deploy again and the recipe should succeed. | |
utility_name = nil | |
# utility_name = "sphinx" | |
# If you want to have scheduled reindexes in cron, enter the minute | |
# interval here. This is passed directly to cron via /, so you should | |
# only use numbers between 1 - 59. | |
# | |
# If you don't want scheduled reindexes, just leave this set to nil. | |
# Setting it equal to 10 would run the cron job every 10 minutes. | |
cron_interval = nil | |
sphinx_version = '2.0.4' | |
enable_package "app-misc/sphinx" do | |
version sphinx_version | |
end | |
package "app-misc/sphinx" do | |
version sphinx_version | |
action :install | |
end | |
if utility_name | |
if ['solo', 'app', 'app_master'].include?(node[:instance_role]) | |
run_for_app(appname) do |app_name, data| | |
ey_cloud_report "Sphinx" do | |
message "configuring #{flavor}" | |
end | |
directory "/data/#{app_name}/shared/config/sphinx" do | |
recursive true | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
template "/data/#{app_name}/shared/config/sphinx.yml" do | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0644 | |
source "sphinx.yml.erb" | |
variables({ | |
:app_name => app_name, | |
:user => node[:owner_name], | |
:mem_limit => 32 | |
}) | |
end | |
end | |
end | |
if node[:name] == utility_name | |
run_for_app(appname) do |app_name, data| | |
ey_cloud_report "Sphinx" do | |
message "configuring #{flavor}" | |
end | |
directory "/var/run/sphinx" do | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
directory "/var/log/engineyard/sphinx/#{app_name}" do | |
recursive true | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
directory "/data/#{app_name}/shared/config/sphinx" do | |
recursive true | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
remote_file "/etc/logrotate.d/sphinx" do | |
owner "root" | |
group "root" | |
mode 0755 | |
source "sphinx.logrotate" | |
backup false | |
action :create | |
end | |
template "/etc/monit.d/sphinx.#{app_name}.monitrc" do | |
source "sphinx.monitrc.erb" | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0644 | |
variables({ | |
:app_name => app_name, | |
:user => node[:owner_name], | |
:flavor => flavor | |
}) | |
end | |
template "/data/#{app_name}/shared/config/sphinx.yml" do | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0644 | |
source "sphinx.yml.erb" | |
variables({ | |
:app_name => app_name, | |
:user => node[:owner_name], | |
:mem_limit => 32 | |
}) | |
end | |
execute "sphinx config" do | |
command "rake #{flavor}:configure" | |
user node[:owner_name] | |
environment({ | |
'HOME' => "/home/#{node[:owner_name]}", | |
'RAILS_ENV' => node[:environment][:framework_env] | |
}) | |
cwd "/data/#{app_name}/current" | |
end | |
ey_cloud_report "indexing #{flavor}" do | |
message "indexing #{flavor}" | |
end | |
execute "#{flavor} index" do | |
command "rake #{flavor}:index" | |
user node[:owner_name] | |
environment({ | |
'HOME' => "/home/#{node[:owner_name]}", | |
'RAILS_ENV' => node[:environment][:framework_env] | |
}) | |
cwd "/data/#{app_name}/current" | |
end | |
execute "monit reload" | |
if cron_interval | |
cron "sphinx index" do | |
action :create | |
minute "*/#{cron_interval}" | |
hour '*' | |
day '*' | |
month '*' | |
weekday '*' | |
command "cd /data/#{app_name}/current && RAILS_ENV=#{node[:environment][:framework_env]} rake #{flavor}:index" | |
user node[:owner_name] | |
end | |
end | |
end | |
end | |
else | |
if ['solo', 'app', 'app_master'].include?(node[:instance_role]) | |
run_for_app(appname) do |app_name, data| | |
ey_cloud_report "Sphinx" do | |
message "configuring #{flavor}" | |
end | |
directory "/var/run/sphinx" do | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
directory "/var/log/engineyard/sphinx/#{app_name}" do | |
recursive true | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
directory "/data/#{app_name}/shared/config/sphinx" do | |
recursive true | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0755 | |
end | |
remote_file "/etc/logrotate.d/sphinx" do | |
owner "root" | |
group "root" | |
mode 0755 | |
source "sphinx.logrotate" | |
backup false | |
action :create | |
end | |
template "/etc/monit.d/sphinx.#{app_name}.monitrc" do | |
source "sphinx.monitrc.erb" | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0644 | |
variables({ | |
:app_name => app_name, | |
:user => node[:owner_name], | |
:env => node[:environment][:framework_env], | |
:flavor => flavor | |
}) | |
end | |
template "/data/#{app_name}/shared/config/sphinx.yml" do | |
owner node[:owner_name] | |
group node[:owner_name] | |
mode 0644 | |
source "sphinx.yml.erb" | |
variables({ | |
:app_name => app_name, | |
:user => node[:owner_name], | |
:mem_limit => 32 | |
}) | |
end | |
execute "sphinx config" do | |
command "rake #{flavor}:configure" | |
user node[:owner_name] | |
environment({ | |
'HOME' => "/home/#{node[:owner_name]}", | |
'RAILS_ENV' => node[:environment][:framework_env] | |
}) | |
cwd "/data/#{app_name}/current" | |
end | |
ey_cloud_report "indexing #{flavor}" do | |
message "indexing #{flavor}" | |
end | |
execute "#{flavor} index" do | |
command "rake #{flavor}:index" | |
user node[:owner_name] | |
environment({ | |
'HOME' => "/home/#{node[:owner_name]}", | |
'RAILS_ENV' => node[:environment][:framework_env] | |
}) | |
cwd "/data/#{app_name}/current" | |
end | |
execute "monit reload" | |
if cron_interval | |
cron "sphinx index" do | |
action :create | |
minute "*/#{cron_interval}" | |
hour '*' | |
day '*' | |
month '*' | |
weekday '*' | |
command "cd /data/#{app_name}/current && RAILS_ENV=#{node[:environment][:framework_env]} rake #{flavor}:index" | |
user node[:owner_name] | |
end | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment