Tôi đang tìm cách gọi một nhiệm vụ Capistrano duy nhất để thực hiện những việc khác nhau cho các vai trò khác nhau. Capistrano có thể thực hiện việc này hay tôi có viết một nhiệm vụ cụ thể cho từng vai trò không?Tạo nhiệm vụ Capistrano thực hiện các tác vụ khác nhau dựa trên vai trò
Trả lời
Cách thông thường để làm điều này trong 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
Vì vậy, có, bạn không cần phải viết nhiệm vụ riêng biệt, nhưng bạn có thể gọi cho họ từ một nhiệm vụ phụ huynh và họ sẽ lọc một cách thích hợp.
Trên thực tế không có:
% 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
Các: vai trò param được truyền hơn nữa để chạy lệnh vv nhưng dường như không ảnh hưởng đến việc nhiệm vụ đang thực sự bị sa thải.
Xin lỗi, không tìm cách đưa nhận xét về nhận xét vì vậy tôi đã viết nó ở đây.
Có một cách, loại. Kiểm tra: http://weblog.rubyonrails.org/2006/8/30/capistrano-1-1-9-beta/ và bạn sẽ thấy rằng bạn có thể ghi đè các vai trò mặc định bằng biến môi trường ROLES.
Tôi có một công việc định nghĩa là:
desc "A simple test to show we can ssh into all servers"
task :echo_hello, :roles => :test do
run "echo 'hello, world!'"
end
Vai trò :test
được gán cho một máy chủ.
Trên dòng lệnh, tôi có thể chạy:
[[email protected] bin]$ cap echo_hello ROLES=lots_of_servers
Và nhiệm vụ bây giờ sẽ chạy về vai trò lots_of_servers.
Tôi chưa xác minh rằng thao tác này hoạt động bên trong tập lệnh ruby bằng cách cập nhật mã băm ENV
, nhưng đây là một khởi đầu tốt.
Bạn cũng có thể làm
task :foo do
run "command", :roles => :some_role
upload "source", "destination", :roles => :another_role
end
Sử dụng không gian tên: 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
những nhiệm vụ hiển thị trong một -T nắp như
backup:default
backup:web
backup:db
Chỉ dành cho các kỷ lục, điều này có thể là một giải pháp sử dụng 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
Định nghĩa sever để thực hiện "do_something" nhiệm vụ trong một máy chủ ứng dụng sẽ là một cái gì đó như:
server 'application.your.domain', user: 'deploy', roles: %w{app_role}
Sau đó, bạn có thể gọi cho công việc (có một số cách để làm điều đó) và nhiệm vụ sẽ thực hiện các hướng dẫn cụ thể theo "app_role".
- 1. Làm thế nào để bạn xác định các nhiệm vụ giống nhau cho các vai trò khác nhau trong Capistrano?
- 2. Chỉ chạy các nhiệm vụ Capistrano cho một số vai trò nhất định
- 3. Capistrano có thể thực hiện các tác vụ trên máy chủ liên tục không?
- 4. Dịch vụ dữ liệu dựa trên nhiệm vụ trong Silverlight
- 5. Capistrano có thể đặt các biến dựa trên vai trò không?
- 6. Azure - xếp hàng các nhiệm vụ dựa trên thời gian
- 7. Vai trò của JAXB trong các Dịch vụ Web dựa trên Java
- 8. Capistrano: gọi nhiệm vụ với các đối số (nội bộ)
- 9. Cách tạo tác vụ grunt tham chiếu đến các tác vụ grunt khác
- 10. Thực hiện tác vụ Ant với Maven
- 11. Gruntjs xem các thư mục khác nhau và thực hiện các tác vụ
- 12. capistrano,: vai trò db, nó là gì?
- 13. Khởi động các tác vụ nền với Capistrano
- 14. Cách lên lịch một nhiệm vụ để thực hiện trong Thư viện song song nhiệm vụ
- 15. C# Bảo mật dựa trên vai trò
- 16. Hồ bơi chủ đề để thực hiện các nhiệm vụ tùy ý với các ưu tiên khác nhau
- 17. Lượt xem dựa trên vai trò Django?
- 18. đồ thị quan hệ nhiệm vụ dựa trên JIRA
- 19. Làm thế nào để thực hiện nhiệm vụ cần tây từ bên trong nhiệm vụ?
- 20. Vai trò web và vai trò của nhân viên trong dịch vụ đám mây/Node.js
- 21. Thực hiện SQL trong tác vụ Gradle?
- 22. Điều hướng dựa trên vai trò
- 23. Sử dụng tác vụ MSBuild và CSPack để đóng gói vai trò Azure
- 24. Làm thế nào để chờ đợi trên tất cả các tác vụ (tạo nhiệm vụ và nhiệm vụ phụ) mà không sử dụng TaskCreationOptions.AttachedToParent
- 25. Cách lên lịch một tác vụ trong cửa sổ vai trò công nhân azure
- 26. Eclipse: Sự khác biệt giữa chế độ xem "Tác vụ" và "Danh sách nhiệm vụ" Xem
- 27. Tạo các tác vụ theo lịch
- 28. Cách thực hiện tác vụ trên OK của JOptionPane.showMessageDialog
- 29. Định tuyến dựa trên vai trò MVC
- 30. Bảo mật dựa trên vai trò cho OSGi
Điều này không hiệu quả đối với tôi, cả ba nhiệm vụ đều được thực thi. – aceofspades
Không làm việc cho tôi. Tất cả các nhiệm vụ được thực hiện. –
Không hoạt động ở đây – Fluffy