2009-07-20 17 views
76

Qual è lo scopo e la funzione dei "ruoli" in una ricetta di Capistrano? Quando guardo le ricette di esempio, vedo spesso qualcosa di simile:Che cos'è esattamente un "ruolo" in Capistrano?

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

modo che appaia come un ruolo è fondamentalmente un serverdove Capistrano esegue i comandi. Se questo è il caso, allora perché dovrebbe essere chiamato un "ruolo" piuttosto che un "host" o un "server"?

Nell'esempio sopra, qual è la differenza tra i ruoli :app e :web?

Cosa fa l'opzione :primary => true?

risposta

60

I ruoli consentono di scrivere attività capistrano che si applicano solo a determinati server. Questo si applica solo alle distribuzioni multi-server. I ruoli predefiniti di "app", "web" e "db" vengono utilizzati anche internamente, quindi la loro presenza non è facoltativa (AFAIK)

Nell'esempio fornito, non vi è alcuna differenza funzionale.

": primary => true" è un attributo che consente un'ulteriore granularità nella specifica dei server nelle attività personalizzate.

Ecco un esempio di specifica di ruolo in una definizione di task:

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

consultare il sito Web Capistrano @https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role per una più ampia spiegazione.

+2

Nota: la tua riga dovrebbe essere ': only => {: primary => true}' Penso che ... o il comando' role' nella domanda dovrebbe usare ': master => true' invece. Credo che questi attributi siano completamente in forma libera. –

3

L'opzione ": primary => true" indica che il server del database è il server primario. Questo è importante quando si desidera utilizzare la replica con MySQL, ad esempio. Consente di creare un altro server di database con mirroring che può essere utilizzato per il failover automatico. Viene inoltre utilizzato per decidere su quale server di database eseguire le migrazioni del modello (poiché tali modifiche verranno replicate sui server di failover). Questo link lo chiarisce un po 'di più: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Problemi correlati