Je cherche un moyen d'appeler une tâche Capistrano unique pour effectuer différents types de tâches. Est-ce que Capistrano est capable de faire cela, ou est-ce que j'ai écrit une tâche spécifique pour chaque rôle?Création d'une tâche Capistrano exécutant différentes tâches en fonction du rôle
Répondre
La méthode standard pour faire en Capistrano:
task :whatever, :roles => [:x, :y, :z] do
x_tasks
y_tasks
z_tasks
end
task :x_tasks, :roles => :x do
#...
end
task :y_tasks, :roles => :y do
#...
end
task :z_tasks, :roles => :z do
#...
end
Alors oui, vous avez besoin d'écrire des tâches distinctes, mais vous pouvez les appeler à partir d'une tâche parent et ils filtrera de manière appropriée.
En fait non:
% cat capfile
server 'localhost', :role2
task :task1, :roles=>:role1 do
puts 'task1'
end
task :task2 do
task1
end
% cap task2
* executing `task2'
* executing `task1'
task1
Le: rôles PARAM est passé plus à exécuter la commande, etc, mais ne semble pas affecter si la tâche est en fait tiré.
Désolé, nous n'avons pas trouvé le moyen de mettre un commentaire sur le commentaire, donc je l'ai écrit ici.
Il y a un moyen, un peu de. Vérifiez: http://weblog.rubyonrails.org/2006/8/30/capistrano-1-1-9-beta/ et vous verrez que vous pouvez remplacer les rôles par défaut à l'aide de la variable d'environnement ROLES.
J'ai une tâche définie comme:
desc "A simple test to show we can ssh into all servers"
task :echo_hello, :roles => :test do
run "echo 'hello, world!'"
end
Le rôle :test
est affecté à un serveur.
Sur la ligne de commande, je peux courir:
[[email protected] bin]$ cap echo_hello ROLES=lots_of_servers
et la tâche maintenant exécuter sur le rôle de lots_of_servers.
Je n'ai pas vérifié que cela fonctionne dans un script ruby en mettant à jour le hachage ENV
, mais c'est un bon début.
Vous pouvez également faire
task :foo do
run "command", :roles => :some_role
upload "source", "destination", :roles => :another_role
end
Utilisez l'espace de nommage: https://github.com/leehambley/capistrano-handbook/blob/master/index.markdown#namespacing-tasks
namespace :backup do
task :default do
web
db
end
task :web, :roles => :web do
puts "Backing Up Web Server"
end
task :db, :roles => :db do
puts "Backing Up DB Server"
end
end
ces tâches apparaissent dans un bouchon -T comme
backup:default
backup:web
backup:db
Seulement pour l'enregistrement, cette pourrait être une solution utilisant Capistrano 3:
desc "Do something specific for 3 different servers with 3 different roles"
task :do_something do
on roles(:api_role), in: :sequence do
# do something in api server
end
on roles(:app_role), in: :sequence do
# do something in application server
end
on roles(:another_role), in: :sequence do
# do something in another server
end
end
La définition sever pour effectuer des tâches « de do_something » dans un serveur d'application serait quelque chose comme:
server 'application.your.domain', user: 'deploy', roles: %w{app_role}
Ensuite, vous pouvez appeler la tâche (il y a plusieurs façons de le faire) et la tâche exécuter des instructions spécifiques en fonction de "app_role".
- 1. programmer la fonction capistrano en utilisant cron
- 2. Exécuter toutes les tâches avec espace de noms Capistrano
- 3. La tâche NAnt exécutant "svn import" échoue
- 4. Tâche de tâches du planificateur de tâches Windows dans une application .net
- 5. SharePoint Modifier la liste des tâches Tâche
- 6. Comment puis-je inclure Capistrano penser des tâches lors de l'utilisation du sphinx gemme
- 7. Comment déployer sur un seul serveur spécifique en utilisant Capistrano
- 8. Comment faire pour amener la barre des tâches Windows au premier plan tout en exécutant maximisé?
- 9. Comment puis-je créer une vue présentant différents affichages en fonction du rôle de l'utilisateur?
- 10. Configurer une tâche Capistrano pour qu'elle s'exécute uniquement sur déploiement, pas sur déploiement: froid
- 11. Création de nouvelles fenêtres exécutant des programmes à l'écran
- 12. eXtreme Programming - Le prototypage en tant que tâche? Ou réduire les tâches que vous effectuez?
- 13. Création d'une fonction Sin() personnalisée en Java
- 14. obtenir le texte html en exécutant url
- 15. Questions sur le déploiement par défaut Tâche dans Capistrano pour le projet PHP et config.php
- 16. Contrôle du volet des tâches personnalisées Outlook
- 17. Rendre l'objet PHP effectuer différentes actions en fonction du nom de la variable
- 18. Quel est le rôle du noeud Assemblies dans Web.Config?
- 19. Capistrano: exemple de shell
- 20. Tâche mise en commun de fil orienté
- 21. Exécution de plusieurs tâches parallèles en arrière-plan avec Rails
- 22. Détails de l'exécution des tâches du paquet SSIS
- 23. Sécurité sans rôle?
- 24. Création de diagrammes Flex avec une tâche de fourmis
- 25. problème de capistrano
- 26. Problème de symétrie Capistrano?
- 27. Échec de Capistrano
- 28. Visual Studio ayant du mal à peindre les tâches SSIS
- 29. Capistrano Incitant le nom de domaine du projet
- 30. Gestion de différentes bases de données avec LINQ en fonction de l'utilisateur actuellement connecté?
Cela n'a pas fonctionné pour moi, les trois tâches sont exécutées. – aceofspades
Ne fonctionnait pas pour moi non plus. Toutes les tâches sont exécutées. –
Ne fonctionne pas ici non plus – Fluffy