Skip to content

Instantly share code, notes, and snippets.

@lightcap
Created August 10, 2010 19:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lightcap/517817 to your computer and use it in GitHub Desktop.
Save lightcap/517817 to your computer and use it in GitHub Desktop.
# For complete deployment instructions, see the following support guide:
# http://www.engineyard.com/support/guides/deploying_your_application_with_capistrano
require "eycap/recipes"
Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'hoptoad_notifier-*')].each do |vendored_notifier|
$: << File.join(vendored_notifier, 'lib')
end
require 'hoptoad_notifier/capistrano'
# =================================================================================================
# ENGINE YARD REQUIRED VARIABLES
# =================================================================================================
# You must always specify the application and repository for every recipe. The repository must be
# the URL of the repository you want this recipe to correspond to. The :deploy_to variable must be
# the root of the application.
set :keep_releases, 5
set :application, "portal"
set :user, "pvpower"
set :deploy_to, "/data/#{application}"
set :monit_group, "portal"
set :runner, "pvpower"
set :repository, "git@github.com:pvpowered/portal.git"
set :scm, :git
set :production_database, "pvpower_production"
set :production_dbhost, "pvpower-db-master"
set :staging_database, "pvpower_staging"
set :migration_stg_database, "pvpower_staging"
set :migration_prod_database, "pvpower_production"
set :migration_prod_dbhost, "pvpower-mysql-production-master"
set :migration_stg_dbhost, "pvpower-mysql-staging-master"
set :staging_dbhost, "pvpower-db-master"
set :dbuser, "pvpower_db"
set :dbpass, "BuKJ6Dn5Ths7"
# comment out if it gives you trouble. newest net/ssh needs this set.
ssh_options[:paranoid] = false
# =================================================================================================
# ROLES
# =================================================================================================
# You can define any number of roles, each of which contains any number of machines. Roles might
# include such things as :web, or :app, or :db, defining what the purpose of each machine is. You
# can also specify options that can be used to single out a specific subset of boxes in a
# particular role, like :primary => true.
task :production do
role :web, "70.42.33.4:8030" # stringsizer [mongrel] [pvpower-db-master], gar [mongrel] [pvpower-db-master], portal [mongrel] [pvpower-db-master]
role :web, "70.42.33.4:8031"
role :web, "70.42.33.4:8032"
role :app, "70.42.33.4:8030", :mongrel => true
role :db , "70.42.33.4:8030", :primary => true
role :app, "70.42.33.4:8031", :mongrel => true
role :app, "70.42.33.4:8032", :mongrel => true
set :rails_env, "production"
set :branch, "master"
set :environment_database, defer { production_database }
set :environment_dbhost, defer { production_dbhost }
end
task :staging do
role :web, "70.42.33.4:8033" # stringsizer [mongrel] [pvpower-db-master], gar [mongrel] [pvpower-db-master], portal [mongrel] [pvpower-db-master]
role :app, "70.42.33.4:8033", :mongrel => true
role :db , "70.42.33.4:8033", :primary => true
set :rails_env, "staging"
set :branch, "develop"
set :environment_database, defer { staging_database }
set :environment_dbhost, defer { staging_dbhost }
end
task :migration_prod do
role :web, "72.46.233.21:7001"
role :web, "72.46.233.21:7002"
role :web, "72.46.233.21:7003"
role :app, "72.46.233.21:7001", :mongrel => true
role :app, "72.46.233.21:7002", :mongrel => true
role :app, "72.46.233.21:7003", :mongrel => true
role :db, "72.46.233.21:7008", :primary => true
set :rails_env, "production"
set :branch, "master"
set :environment_database, defer { migration_prod_database }
set :environment_dbhost, defer { migration_prod_dbhost }
end
task :migration_stg do
role :web, "72.46.233.19:7000"
role :app, "72.46.233.19:7000", :mongrel => true
role :db, "72.46.233.19:7000", :primary => true
set :rails_env, "staging"
set :branch, "develop"
set :environment_database, defer { migration_stg_database }
set :environment_dbhost, defer { migration_stg_dbhost }
end
# =================================================================================================
desc "Portal custom task"
task :portal_custom, :roles => :app, :except => {:no_release => true, :no_symlink => true} do
run "ln -nfs /shared/rrd/ #{release_path}/db/rrd"
run "ln -nfs /shared/graphs #{release_path}/public/graphs"
run "ln -nfs /shared/gar/config/monitored_data.yml #{release_path}/config/monitored_data.yml"
run "ln -nfs /shared/portal/sessions #{release_path}/tmp/sessions"
end
after "deploy:symlink_configs", "portal_custom"
# =================================================================================================
# Do not change below unless you know what you are doing!
after "deploy", "deploy:cleanup"
after "deploy:migrations" , "deploy:cleanup"
after "deploy:update_code", "deploy:symlink_configs"
# uncomment the following to have a database backup done before every migration
# before "deploy:migrate", "db:dump"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment