From 11dc1b3d9aaf37f8d54e1074afb036fd62506ba4 Mon Sep 17 00:00:00 2001 From: Jim Van Fleet Date: Sat, 11 Jul 2009 16:59:55 -0400 Subject: [PATCH] Adding appropriate attributes and metadata for a modern approach to getting browsercms up and rolling --- browsercms/attributes/setup.rb | 22 ++++ browsercms/metadata.rb | 9 ++ browsercms/recipes/default.rb | 115 +++++++++---------- browsercms/templates/default/admin.conf.erb | 4 +- browsercms/templates/default/public.conf.erb | 4 +- 5 files changed, 90 insertions(+), 64 deletions(-) create mode 100644 browsercms/attributes/setup.rb create mode 100644 browsercms/metadata.rb diff --git a/browsercms/attributes/setup.rb b/browsercms/attributes/setup.rb new file mode 100644 index 0000000..ba46335 --- /dev/null +++ b/browsercms/attributes/setup.rb @@ -0,0 +1,22 @@ +db_password = "" +chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a +20.times { |i| db_password << chars[rand(chars.size-1)] } + +railsapps Mash.new unless attribute?("railsapps") +(railsapps[:names] ||= []) << "browsercms" +railsapps[:browsercms] = Mash.new unless railsapps.has_key?(:browsercms) +railsapps[:browsercms][:db] = Mash.new unless railsapps[:browsercms].has_key?(:db) +railsapps[:browsercms][:db][:user] = "community_db" unless railsapps[:browsercms][:db].has_key?(:user) +railsapps[:browsercms][:db][:password] = db_password unless railsapps[:browsercms][:db].has_key?(:password) +railsapps[:browsercms][:db][:database] = "community_production" unless railsapps[:browsercms][:db].has_key?(:database) +railsapps[:browsercms][:app] = Mash.new unless railsapps[:browsercms].has_key?(:app) +railsapps[:browsercms][:app][:user] = "tradeking" unless railsapps[:browsercms][:app].has_key?(:user) +railsapps[:browsercms][:app][:group] = "app" unless railsapps[:browsercms][:app].has_key?(:group) +railsapps[:browsercms][:app][:path] = "/srv/community" unless railsapps[:browsercms][:app].has_key?(:path) +railsapps[:browsercms][:app][:branch] = "release" unless railsapps[:browsercms][:app].has_key?(:branch) +railsapps[:browsercms][:app][:log_dir] = "/var/log/browsercms" unless railsapps[:browsercms][:app].has_key?(:log_dir) +railsapps[:browsercms][:app][:style] = "demo" unless railsapps[:browsercms][:app].has_key?(:style) +railsapps[:browsercms][:app][:sitename] = "site" unless railsapps[:browsercms][:app].has_key?(:sitename) +railsapps[:browsercms][:app][:pool_size] = "4" unless railsapps[:browsercms][:app].has_key?(:pool_size) +railsapps[:browsercms][:host] = `hostname -f`.downcase.strip unless railsapps[:browsercms].has_key?(:host) +railsapps[:browsercms][:repo] = "git://github.com/browsermedia/browsercms.git" \ No newline at end of file diff --git a/browsercms/metadata.rb b/browsercms/metadata.rb new file mode 100644 index 0000000..b92fe8b --- /dev/null +++ b/browsercms/metadata.rb @@ -0,0 +1,9 @@ +name "broswercms" +description 'Run a browsercms instance on this node' +depends "apache::mod_rails" +depends "apt" +depends "gems" +depends "git" +depends "passenger" +maintainer 'Jim Van Fleet' +maintainer_email 'jvanfleet@tradeking.com' \ No newline at end of file diff --git a/browsercms/recipes/default.rb b/browsercms/recipes/default.rb index 2dd93df..934e037 100644 --- a/browsercms/recipes/default.rb +++ b/browsercms/recipes/default.rb @@ -2,7 +2,7 @@ # Cookbook Name:: browsercms # Recipe:: default # -# Copyright 2009, Kane Reid Securities Group, Inc. +# Copyright 2009, Jim Van Fleet # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,83 +17,78 @@ # limitations under the License. # -include_recipe 'mysql' -include_recipe 'apache2' -include_recipe 'passenger' -include_recipe 'gems' +include_recipe "apache2::mod_rails" +include_recipe "passenger" -browsercms = node[:browsercms] -user = node[:user] +user = node[:railsapps][:browsercms][:user] +repo = node[:railsapps][:browsercms][:repo] +user_home = File.expand_path("~#{user}") -execute "download-browsercms" do - command "cd /home/#{user}; git clone git://github.com/browsermedia/browsercms.git" - creates "/home/#{user}/browsercms" - action :run -end -execute "install-browsercms" do - command "cd /home/#{user}/browsercms; rake cms:install" - creates "/usr/lib/ruby/gems/1.8/gems/browser_cms_blog_module-3.0.0" - action :run +%w{browsercms}.each do |gem_dep| + gem_package gem_dep end - -directory "/var/log/browsercms" do - action :create - owner "root" - group "admin" - mode 0775 +r = gem_package "chef-deploy" do + source "http://gems.engineyard.com" + action :nothing end -directory "/var/www/browsercms" do - action :create - owner user - group "www-data" - mode 0775 -end +r.run_action(:install) -directory "/var/www/browsercms/site" do - action :create - owner user - group "www-data" - mode 0775 +Gem.clear_paths +require "chef-deploy" +current_path = node[:railsapps][:browsercms][:app][:path] + "/current" + +["#{node[:railsapps][:browsercms][:app][:log_dir]}", + "#{node[:railsapps][:browsercms][:app][:path]}", + "#{node[:railsapps][:browsercms][:app][:path]}/shared", + "#{node[:railsapps][:browsercms][:app][:path]}/shared/config"].each do |dir_name| + directory dir_name do + owner user + group node[:railsapps][:browsercms][:app][:group] + mode 0775 + end end -template "/var/www/browsercms/database.yml" do - owner node[:user] - mode 0644 +template "#{node[:railsapps][:browsercms][:app][:path]}/shared/config/database.yml" do source "database.yml.erb" - variables({ - :name => "browsercms", - :passwd => "J4LZE1XYTX30QYL" - }) + owner user + group node[:railsapps][:browsercms][:app][:group] + variables :name => node[:railsapps][:browsercms][:db][:database], + :passwd => node[:railsapps][:browsercms][:db][:password] + mode "0664" end execute "setup-browsercms" do - command "umask 002 && rails site -d mysql -m /var/chef/cookbooks/browsercms/files/default/#{browsercms["style"]}_rails_template.rb > results.txt" - creates "/var/www/browsercms/site/public/" - group "www-data" - cwd "/var/www/browsercms" - user "www-data" - action :run + command "rails #{node[:railsapps][:browsercms][:app][:sitename]} -d mysql -m http://browsercms.org/templates/#{node[:railsapps][:browsercms][:app][:style]}.rb" + creates "#{node[:railsapps][:browsercms][:app][:path]}/#{node[:railsapps][:browsercms][:app][:sitename]}/public/" + group "#{node[:railsapps][:browsercms][:app][:group]}" + cwd "#{node[:railsapps][:browsercms][:app][:path]}" + user "#{node[:railsapps][:browsercms][:app][:user]}" + action :run + umask 002 +end + +web_app "public-site" do + docroot "#{current_path}/public" + server_name node[:railsapps][:browsercms][:host] + log_dir node[:railsapps][:browsercms][:app][:log_dir] + max_pool_size node[:railsapps][:browsercms][:app][:pool_size] + rails_env "production" + template "public.conf.erb" end -passenger_app "public-site" do - conf( {:env => "production", - :server_name => browsercms["server_name"], - :template => "public.conf.erb", - :docroot => browsercms["docroot"], - :enable => true - } ) +web_app "admin-site" do + docroot "#{current_path}/public" + server_name node[:railsapps][:browsercms][:host] + log_dir node[:railsapps][:browsercms][:app][:log_dir] + rails_env "production" + template "admin.conf.erb" end -passenger_app "admin-site" do - conf( {:env => "production", - :server_name => browsercms["server_name"], - :template => "admin.conf.erb", - :docroot => browsercms["docroot"], - :enable => true - } ) +apache_site "default" do + enable false end # append config.action_controller.page_cache_directory = RAILS_ROOT + "/public/cache/" to config/environments/production.rb \ No newline at end of file diff --git a/browsercms/templates/default/admin.conf.erb b/browsercms/templates/default/admin.conf.erb index 7c6dadb..d12fbbd 100644 --- a/browsercms/templates/default/admin.conf.erb +++ b/browsercms/templates/default/admin.conf.erb @@ -7,8 +7,8 @@ RailsPoolIdleTime 3600 RailsEnv 'production' - ErrorLog /var/log/browsercms/admin_site_error.log - CustomLog /var/log/browsercms/admin_site_access.log combined + ErrorLog <%= @log_dir %>/admin_site_error.log + CustomLog <%= @log_dir %>/admin_site_access.log combined ErrorDocument 404 /404.html ErrorDocument 500 /500.html diff --git a/browsercms/templates/default/public.conf.erb b/browsercms/templates/default/public.conf.erb index c6d0205..95efa66 100644 --- a/browsercms/templates/default/public.conf.erb +++ b/browsercms/templates/default/public.conf.erb @@ -7,8 +7,8 @@ RailsPoolIdleTime 3600 RailsEnv 'production' - ErrorLog /var/log/browsercms/public_site_error.log - CustomLog /var/log/browsercms/public_site_access.log combined + ErrorLog <%= @log_dir %>/public_site_error.log + CustomLog <%= @log_dir %>/public_site_access.log combined ErrorDocument 404 /404.html ErrorDocument 500 /500.html