Szukam sposobu na wywołanie pojedynczego zadania Capistrano, aby wykonać różne czynności dla różnych ról. Czy Capistrano jest w stanie to zrobić, czy mogę napisać konkretne zadanie dla każdej roli?Tworzenie zadania Capistrano, które wykonuje różne zadania na podstawie roli
Odpowiedz
Standardowy sposób zrobić to w 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
Więc tak, trzeba zrobić, aby napisać osobne zadania, ale można do nich dzwonić za zadanie dominującej i będą filtrować odpowiednio.
Właściwie nie:
% 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
: role param jest przekazywany dalej do uruchomienia polecenia itp ale nie wydaje się wpływać, czy zadanie jest rzeczywiście zwolniony.
Niestety, nie znalazłem sposobu na skomentowanie komentarza, więc napisałem go tutaj.
Istnieje sposób, rodzaj. Sprawdź: http://weblog.rubyonrails.org/2006/8/30/capistrano-1-1-9-beta/, a zobaczysz, że możesz zastąpić domyślne role przy użyciu zmiennej środowiskowej ROLES.
Mam zadanie zdefiniowane jako:
desc "A simple test to show we can ssh into all servers"
task :echo_hello, :roles => :test do
run "echo 'hello, world!'"
end
:test
rola jest przypisana do jednego serwera.
w linii poleceń, można uruchomić:
[[email protected] bin]$ cap echo_hello ROLES=lots_of_servers
a zadanie będzie teraz pracować na roli lots_of_servers.
Nie sprawdziłem, czy działa to w skrypcie ruby, aktualizując skrót mieszania ENV
, ale jest to dobry początek.
Można również zrobić
task :foo do
run "command", :roles => :some_role
upload "source", "destination", :roles => :another_role
end
Zastosowanie Przestrzenie nazw: 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
zadania te pojawiają się w -T cap jak
backup:default
backup:web
backup:db
Tylko dla rekordu, to może być rozwiązaniem wykorzystującym 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
Definicja Sever do wykonywania „do_something” zadanie w serwerze aplikacji byłoby coś jak:
server 'application.your.domain', user: 'deploy', roles: %w{app_role}
Następnie można wywołać zadanie (istnieje kilka sposobów, aby to zrobić) i zadanie zostanie wykonaj konkretne instrukcje zgodnie z "app_role".
- 1. Gradle wykonuje wszystkie zadania?
- 2. Czy Capistrano może ustawiać zmienne na podstawie roli?
- 3. Tworzenie zadania z pulsem
- 4. Jak dodać kilka kroków do zadania capistrano?
- 5. Czy Capistrano może wykonywać zadania na hostach kolejno?
- 6. godna uwagi Kolejka na podstawie zadania
- 7. Czy różne symulatory 68k mają różne zadania TRAP?
- 8. Tworzenie zadania cron dla mysqldump
- 9. Tworzenie programowego zadania Spring Framework?
- 10. Uruchamianie zadania przy przepływie powietrza na podstawie zgłoszenia internetowego
- 11. selera - zadania, które należy uruchomić w priorytecie
- 12. Rx i zadania - anulować uruchamianie zadania po utworzeniu nowego zadania?
- 13. Oczekiwanie na zakończenie zadania
- 14. JavaFX - oczekiwanie na zakończenie zadania
- 15. Zadania, zadania Cron lub Backendy dla aplikacji
- 16. SASS CSS poprzez zadania ANT + tworzenie katalogów
- 17. Tworzenie (zadania równoległe) w systemie Windows
- 18. Uruchamianie zadania po wszystkie zadania zostały zakończone
- 19. django-celery: Dynamiczne tworzenie i rejestrowanie zadania
- 20. Występują aplikacje śledzące, które dzielą problemy na (pod) zadania?
- 21. Selery - Uzyskaj identyfikator zadania dla bieżącego zadania
- 22. Zaplanowane zadania z Sql Azure?
- 23. Dziedziczenie definicji zadania spadkowego
- 24. Wybór zadania opartego na językach?
- 25. Jak zdobyć użytkowników na podstawie roli?
- 26. Podjęcie zadania jako parametr
- 27. Jak uzyskać dane wyjściowe zadania przesiewowego do innego zadania gruntowego?
- 28. Jak wywołać inne zadania z mojego niestandardowego zadania * przed uruchomieniem * mojego kodu zadania?
- 29. Zgrabianie przed hakiem zadania
- 30. ThreadStatic dla zadania TPL
To nie zadziałało, wszystkie trzy zadania zostały wykonane. – aceofspades
Nie działa również dla mnie. Wszystkie zadania zostaną wykonane. –
Tutaj również nie działa – Fluffy