J'ai fini par poster une question sur les utilisateurs Capistrano liste here, et a obtenu la réponse suivante Jamis (édité un peu par moi pour plus de clarté):
Essayez HOSTS variable d'environnement:
cap HOSTS=app2.example.com production deploy
Notez que faire cela traitera App2 comme dans tous les rôles , non seulement selon le rôle (s) il arrive à déclarer dans.
Si ce que vous voulez est de faire une Déployez régulière, mais seulement agir sur App2 et seulement comme App2 est déclaré dans votre fichier de recette, vous peut utiliser le HOSTFILTER variable au lieu:
cap HOSTFILTER=app2.example.com production deploy
[...]
Considérons cet exemple concret. Supposons que votre script définit trois serveurs, A, B et C. Et il définit une tâche, « toto », que (par défaut) veut courir sur A et B, mais pas C. Comme ceci:
role :app, "A", "B"
role :web, "C"
task :foo, :roles => :app do
run "echo hello"
end
maintenant, si vous le faites cap foo
, il exécutera la commande d'écho sur A et B.
Si vous cap HOSTS=C foo
, il exécutera la commande d'écho sur C, quel que soit le: paramètre rôles à la tâche .
Si vous faites cap HOSTFILTER=C foo
, la commande echo ne sera pas exécutée à , car l'intersection de (A B) et (C) est un ensemble vide.(Il n'y a pas hôtes dans la liste d'hôtes foo qui correspondent à C.)
Si vous cap HOSTFILTER=A foo
, il exécutera la commande echo uniquement A, parce que (A B) a recoupé avec (A) est (A).
Enfin, si vous le faites cap HOSTFILTER=A,B,C foo
, il exécutera commande l'écho sur A et B (mais pas C), parce que (A B) a recoupé avec (A B C) est (A B). Pour résumer: HOSTS remplace complètement la déclaration des hôtes ou des rôles de la tâche et force tout à s'exécuter sur les hôtes spécifiés. L'HOSTFILTER, en revanche, filtre simplement les hôtes existants par rapport à la liste donnée, en ne sélectionnant que les serveurs qui figurent déjà dans la liste des serveurs de tâches .
On dirait que cela ne marche plus avec Capistrano 3.4 – collimarco
Dans Capistrano 3, vous utiliserez la variable d'environnement HOSTS pour ce que HOSTFILTER est dans Capistrano 2. http://capistranorb.com/documentation/advanced-features/host-filtering / – codener