Hi Peter,
I already use the multistage gem which works very well for us.

I am reluctant to add any bits of config file in my capistrano tasks.
I prefer to keep "implementation" and "content" seperate (read: The
art of unix programming). That allows me to version my config files
using an external versioning tool and keep all configs together.

If I could download a file to the deploy platform, build the config
file and then send this out to nodes that would be preferable to doing
a local svn checkout on each node and building the config file
seperately on each server. I prefer build once deploy many to deploy
many, build many.

Regards

On Mar 2, 4:06 pm, Peter Booth <[email protected]> wrote:
> 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 urlhttp://localhost:#{i}/monit
>              with timeout 10 seconds
>           then restart
>           if failed urlhttp://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 
[email protected]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---

Reply via email to