Hi,
I am trying to pass an option via the command line switch -S to run a
capistrano task on specific set of machines. For example:
cap -S subset=slave_subset_b start_slave_subset
Should run the task "start_slave_subset" on machines specified by
slave_subset_b. Is there a way to do this? At the moment my Capfile
looks like:
role :slave_subset_a, "test02", "test03", "test04", "test05", "test06"
role :slave_subset_b, "test07"
role :slave_subset_c, "test02"
role(:get_dynamic_roles) {
servers=[]
if #{slave_subset_a} == #{subset}
servers=roles[:slave_subset_a].servers
print "matched subset_a\n"
elsif #{slave_subset_b} == #{subset}
servers=roles[:slave_subset_b].servers
print "matched subset_b\n"
elsif #{slave_subset_c} == #{subset}
servers=roles[:slave_subset_c].servers
print "matched subset_c\n"
else
print "matched nothing\n"
end
servers
}
desc "Starts slave processes."
task :start_slave_subset, :roles => :get_dynamic_roles do
print "subset = #{subset}"
run <<-CMD
#{install_dir}/current/bin/random-wait.sh 5 &&
#{install_dir}/current/bin/start.sh
CMD
end
When I run the cap command (above) it seems like it arbitrarily
matches one of the 4 else blocks, as if there is some uninitialized
variable. Is there a way to do what I'm trying to do ?
-Sanjit
--
* You received this message because you are subscribed to the Google Groups
"Capistrano" group.
* To post to this group, send email to [email protected]
* To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/capistrano?hl=en