例如我这里有 3 个应用,采用 rpm 方式部署 每个应用都有 deploy 和 version 两个操作
cap -vT
cap invoke
cap app:deploy
cap app:version
cap app_baidu:deploy
cap app_baidu:version
cap app_drawer:deploy
cap app_drawer:version
由于我无法将参数传递进 task 所以对每个 task 进行一次定义,一个 app 就要定义这样一段
namespace :app do
task :deploy, :roles => [:app] do
run "yum update app -y"
end
task :version, :roles => [app] do
run "rpm -qa app"
end
end
其实 task 之间只有 namespace 和 roles 名称不同,例如对app_baidu就变成了
namespace :app_baidu do
task :deploy, :roles => [:app_baidu] do
run "yum update app_baidu -y"
end
task :version, :roles => [app_baidu] do
run "rpm -qa app_baidu"
end
end
这样的 app 我这里有十几个,感觉书写非常繁琐并且易出错 是否有方法只写一个 task?能否将命令行变量传递进 task,把个性化的名称用变量替换? 查看文档没有发现这方面的内容