Skip to content

Instantly share code, notes, and snippets.

@abondis
Created July 13, 2011 22:52
Show Gist options
  • Save abondis/1081518 to your computer and use it in GitHub Desktop.
Save abondis/1081518 to your computer and use it in GitHub Desktop.
cookbook/recipes/websites
include_recipe "mysql::client"
node[:websites].each do |website|
db_website = search(:websites, "id:#{website} AND status:enabled").first
puts "apptype: #{db_website}"
case db_website["apptype"]
when "php", "dp", "wp"
document_root="/var/www/#{db_website["client"]}/#{db_website["id"]}"
package "php"
include_recipe "apache2::mod_php5"
apache_module "php5"
web_app db_website["id"] do
template "vhost-#{db_website["apptype"]}.erb"
docroot document_root
server_name db_website["name"]
server_aliases db_website["aliases"]
env node.chef_environment
end
case db_website["apptype"]
when "wp"
tpl = "#{document_root}/wp-config.php"
when "dp"
tpl = "#{document_root}/sites/default/settings.php"
end
if node[:environment] == "stage"
# if db_website["dbstage"] == ""
# set node.websites[website]['dbstage'] = node[:name]
# end
dbhost = db_website["dbstage"]
else
# if db_website["db"] == ""
# set node.websites[website]['db'] = node[:name]
# end
dbhost = db_website["db"]
end
user db_website["id"] do
comment "#{db_website["name"]}"
system true
shell "/bin/false"
end
group "devs" do
members db_website["id"]
end
directory document_root do
owner db_website["id"]
group "devs"
mode "0755"
recursive true
action :create
end
if db_website["repo"] != ""
url = db_website["repo"][%r{(https?://|.*@)?[^/]*}].gsub(":", '\\:')
url= url.gsub('/','?')
puts "url #{url}"
db_repo = search(:repos, "url:#{url}\*").first
puts "db_repo #{db_repo}"
case db_website["repotype"]
when "svn"
subversion db_website["id"] do
repository db_website["repo"]
destination document_root
user db_website["id"]
group "devs"
svn_password db_repo["password"]
svn_username db_repo["username"]
svn_arguments "--non-interactive"
action :sync
end # end svn
when "git"
git db_website["id"] do
repository db_website["repo"]
destination document_root
user db_website["id"]
action :sync
end # end git
end # end case repotype
end # end if repo
tplpath = tpl.split("/")[0..-2].join("/")
directory tplpath do
owner db_website["id"]
group "devs"
mode 0755
recursive true
:create
end # end directory
template tpl do
source "config-#{db_website["apptype"]}.erb"
owner db_website["id"]
group "devs"
mode 0440
variables(
:server_name => db_website["name"],
:dbhost => dbhost,
:dbname => db_website["id"],
:dbuser => db_website["id"],
:dbpass => db_website["dbpass"]
)
end # template
end
end # end .each
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment