I'll admit my method is a little painful, there's a lot to be said for embedding rake tasks in your source repository and pushing them up with the deploy, and then you can call them from capistrano and have them generate configuration files for you. - Lee
2009/3/2 Peter Booth <pbo...@nocoincidences.com> > What you describe sounds kind of painful. I'm assuming that you are already > using Capistrano for something. > I had to solve a similar problem so as to allow multiple "stages" (dev, qa, > uat, prod, ...) to run > on a single host without port or directory clashes. It was amazingly easy > with *capistrano* and > the *capistrano-ext* gem, which allows you to create stage-specific config > files. > > I would create the file dynamically as part of the deploy with code that > looks like that below. > > Peter > > > def build_monit_config( application, application_id, stage, stage_id, > instance) > > monit_config = "########## Monit Configuration File\n\n" > monit_config << "\n# stage: #{stage}\n# stage ID: #{stage_id}\n# > instance: #{instance}\n\n# Produced automatically at: #{Time.now}\n" > first_port = fetch(:start_port) > top_port = first_port + fetch(:num_proc) - 1 > first_port.upto(top_port) { |i| > @path = "/var/www/domains/ > signalpatterns.com/#{application}/#...@stage}/#...@instance}" > @log_dir = "#...@path}/htdocs/current/log" > @config_dir = "#...@path}/htdocs/shared/config" > @pid_dir = "#...@path}/htdocs/shared/pids" > cfg = <<-CMD > check process #{application}-#{i} with pidfile > #...@pid_dir}/#{application}-mongrel.#{i}.pid > start program = "/usr/bin/mongrel_rails cluster::start -C > #...@config_dir}/mongrel_cluster.yml -v --clean --only #{i}" > stop program = "/usr/bin/mongrel_rails cluster::stop -C > #...@config_dir}/mongrel_cluster.yml -v --force --only #{i}" > if failed url http://localhost:#{i}/monit > with timeout 10 seconds > then restart > if failed url http://localhost:#{i}/monit > with timeout 10 seconds for 2 cycles > then > exec "/bin/bash -c 'kill -9 `cat > #...@pid_dir}/#{application}-mongrel.#{i}.pid`'" > group #...@id} > ########## > CMD > monit_config << cfg > } > monit_config > end > > > On Mar 2, 2009, at 9:50 AM, Gerhardus Geldenhuis wrote: > > > Hi > I want to create custom config files and would appreciate any tips if > anyone has attempted the same thing. > > I am planning to do it in the following way: > Download the config files using run command with svn > insert and append the config files using the run command with sed and > awk based on the servers in my roles. > > Typically what I am going to do is setup our modjk loadbalancer > according the the list of tomcat application servers. > > We also loadbalance accross our apaches that run modjk and I intend > using capistrano to build/customize there config files too. > > What I am trying to achieve is that after having build the servers the > only other step I need to do is write a capistrano config and then run > 1 or 2 cap commands to deploy new configs and applications to my > environment. > > Eventually I can reverse the steps; write the config file first which > then takes care of building the virtual servers and configuring them. > > Regards > > > > > > > --~--~---------~--~----~------------~-------~--~----~ To unsubscribe from this group, send email to capistrano-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/capistrano -~----------~----~----~----~------~----~------~--~---