2009-07-20 8 views
76

¿Cuál es el propósito y la función de los "roles" en una receta de Capistrano? Cuando miro a las recetas de muestra, a menudo veo algo como esto:¿Qué es exactamente un "papel" en Capistrano?

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

por lo que parece un papel es básicamente un servidordonde Capistrano ejecuta los comandos. Si ese es el caso, ¿por qué se llamaría un "rol" en lugar de un "host" o "servidor"?

En el ejemplo anterior, ¿cuál es la diferencia entre los roles :app y :web?

¿Qué significa la opción :primary => true?

Respuesta

60

Las funciones le permiten escribir tareas de capistrano que solo se aplican a ciertos servidores. Esto realmente solo se aplica a implementaciones de servidores múltiples. Las funciones predeterminadas de "aplicación", "web" y "db" también se usan internamente, por lo que su presencia no es opcional (AFAIK)

En la muestra que proporcionó, no existe una diferencia funcional.

El ": primary => true" es un atributo que permite mayor detalle en la especificación de servidores en tareas personalizadas.

Aquí es un ejemplo de especificación de papel en una definición de la tarea:

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

Véase el sitio web de Capistrano @https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role para una explicación más extensa.

+2

También tenga en cuenta: su línea debe ser ': only => {: primary => true}' Creo ... o el comando 'role' en la pregunta debería usar': master => true' en su lugar. Creo que estos atributos son completamente libres. –

3

La opción ": primary => true" indica que el servidor de la base de datos es el servidor primario. Esto es importante para cuando quiera usar replicación con MySQL, por ejemplo. Le permite crear otro servidor de base de datos reflejado que se puede usar para conmutación por error automática. También se usa para decidir en qué servidor de bases de datos se deben ejecutar las migraciones del modelo (ya que esos cambios se replicarán en los servidores de conmutación por error). Este enlace lo aclara un poco más: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration