Amazon ec2 在capify中运行另一个任务并指定主机

Amazon ec2 在capify中运行另一个任务并指定主机,amazon-ec2,capistrano,Amazon Ec2,Capistrano,编辑:重新表述问题 假设你有两个任务。第一个类动态地确定主机名,并且只想在该主机上调用第二个类 task :first_task do host_name = ... second_task, :hosts => hostname end task :second_task do run "some stuff" end 据我所知,在过去:主机不工作。将新的主机名分配给角色,并让第二个任务使用这些角色会起作用,但这对现有任务不起作用。作为默认部署,这似乎是可能的:安装程序

编辑:重新表述问题

假设你有两个任务。第一个类动态地确定主机名,并且只想在该主机上调用第二个类

task :first_task do
  host_name = ... 
  second_task, :hosts => hostname
end

task :second_task do
  run "some stuff"
end

据我所知,在过去:主机不工作。将新的主机名分配给角色,并让第二个任务使用这些角色会起作用,但这对现有任务不起作用。作为默认部署,这似乎是可能的:安装程序在传入HOSTS变量时工作,但我不知道它是如何工作的

如果仔细观察,传入一个HOSTS变量就是ENV['HOSTS']。

如果仔细观察,传入一个HOSTS变量就是ENV['HOSTS']。

好吧,这有点晚了,但是。。。你可以试试:

task :first_task do
  host_name = ... 
  set :hosts, host_name
  second_task
end

task :second_task do
  run "some stuff", :hosts => fetch(:hosts)
end

嗯,这件事有点晚了,但是。。。你可以试试:

task :first_task do
  host_name = ... 
  set :hosts, host_name
  second_task
end

task :second_task do
  run "some stuff", :hosts => fetch(:hosts)
end

您定义了自己的任务,因此您必须澄清您遇到的问题。在我自己的任务中,我如何称呼另一个cap任务?您定义了自己的任务,因此您必须澄清您遇到的问题。在我自己的任务中,我如何称呼另一个cap任务?我想知道的是,如果ENV['HOSTS']然后将一些参数传递给任务本身。我宁愿传递参数,然后设置一个ENV变量。我想知道的是ENV['HOSTS']是否会将一些参数传递给任务本身。我宁愿传递参数,然后设置一个ENV变量。