O que exatamente é um “papel” em Capistrano?

86

Qual é o propósito e a função dos "papéis" em uma receita de Capistrano? Quando vejo receitas de amostra, muitas vezes vejo algo assim:

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

Portanto, parece que uma função é basicamente um servidor onde Capistrano executa comandos. Se for esse o caso, por que seria chamado de "função" em vez de "host" ou "servidor"?

No exemplo acima, qual é a diferença entre as funções :appe :web?

O que a :primary => trueopção faz?

Ethan
fonte

Respostas:

67

As funções permitem que você escreva tarefas capistrano que se aplicam apenas a determinados servidores. Isso realmente se aplica apenas a implantações de vários servidores. As funções padrão de "app", "web" e "db" também são usadas internamente, portanto, sua presença não é opcional (AFAIK)

No exemplo que você forneceu, não há diferença funcional.

O ": primary => true" é um atributo que permite maior granularidade na especificação de servidores em tarefas personalizadas.

Aqui está um exemplo de especificação de função em uma definição de tarefa:

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

Consulte o site capistrano @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role para uma explicação mais extensa.

codeprimate
fonte
2
Observe também: sua linha deve ser, :only => { :primary => true }eu acho ... ou o rolecomando na questão deve ser usado :master => true. Eu acredito que esses atributos são totalmente de forma livre.
docwhat
3

A opção ": primary => true" indica que o servidor de banco de dados é o servidor principal. Isso é importante quando você deseja usar a replicação com MySQL, por exemplo. Ele permite que você crie outro servidor de banco de dados espelhado que pode ser usado para failover automático. Também é usado para decidir em qual servidor de banco de dados as migrações de modelo devem ser executadas (já que essas alterações serão replicadas para os servidores de failover). Este link esclarece um pouco mais: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Bobby Wallace
fonte