Czym właściwie jest „rola” w Capistrano?

86

Jaki jest cel i funkcja „ról” w recepturze Capistrano? Kiedy patrzę na przykładowe przepisy, często widzę coś takiego:

role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db,  'somedomain.com', :primary => true

Wygląda więc na to, że rola jest w zasadzie serwerem, na którym Capistrano wykonuje polecenia. Jeśli tak jest, to dlaczego miałby nazywać się „rolą”, a nie „hostem” lub „serwerem”?

W powyższym przykładzie, jaka jest różnica między rolami :appi :web?

Co daje ta :primary => trueopcja?

Ethan
źródło

Odpowiedzi:

67

Role pozwalają na pisanie zadań Capistrano, które mają zastosowanie tylko do niektórych serwerów. Dotyczy to naprawdę tylko wdrożeń na wielu serwerach. Domyślne role „aplikacja”, „internet” i „db” są również używane wewnętrznie, więc ich obecność nie jest opcjonalna (AFAIK)

W dostarczonej próbce nie ma różnicy funkcjonalnej.

„: Primary => true” to atrybut, który pozwala na bardziej szczegółowe określanie serwerów w zadaniach niestandardowych.

Oto przykład specyfikacji roli w definicji zadania:

task :migrate, :roles => :db, :only => { :primary => true } do
  # ...
end

Zobacz stronę internetową Capistrano @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role, aby uzyskać bardziej szczegółowe wyjaśnienie.

codeprimate
źródło
2
Zwróć również uwagę: :only => { :primary => true }myślę, że twoja linia powinna być ... lub rolepolecenie w pytaniu powinno być używane :master => truezamiast tego. Uważam, że te atrybuty są całkowicie dowolne.
docwhat
3

Opcja „: primary => true” wskazuje, że serwer bazy danych jest serwerem podstawowym. Jest to ważne, na przykład, gdy chcesz użyć replikacji z MySQL. Umożliwia utworzenie innego lustrzanego serwera bazy danych, którego można używać do automatycznego przełączania awaryjnego. Służy również do decydowania, na którym serwerze bazy danych należy uruchomić migracje modelu (ponieważ zmiany te zostaną zreplikowane na serwery awaryjne). Ten link wyjaśnia to nieco więcej: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Bobby Wallace
źródło