Skip to content

Commit

Permalink
Adding appropriate attributes and metadata for a modern approach to g…
Browse files Browse the repository at this point in the history
…etting browsercms up and rolling
  • Loading branch information
bigfleet committed Jul 11, 2009
1 parent 6865577 commit 11dc1b3
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 64 deletions.
22 changes: 22 additions & 0 deletions 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"
9 changes: 9 additions & 0 deletions 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'
115 changes: 55 additions & 60 deletions browsercms/recipes/default.rb
Expand Up @@ -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.
Expand All @@ -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
4 changes: 2 additions & 2 deletions browsercms/templates/default/admin.conf.erb
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions browsercms/templates/default/public.conf.erb
Expand Up @@ -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
Expand Down

0 comments on commit 11dc1b3

Please sign in to comment.