with rails digitalocean deploy app ruby-on-rails deployment capistrano

ruby-on-rails - deploy - digitalocean ruby on rails



Uso de Capistrano para implementar una aplicación Rails en múltiples servidores web (3)

Actualmente estoy configurando un nuevo entorno de producción para una aplicación Rails que incluye múltiples servidores de aplicaciones con carga equilibrada (actualmente solo dos, pero esto aumentará con el tiempo)

Me gustaría manejar la implementación de la aplicación en todos estos servidores con un solo comando usando Capistrano (que ya uso para mi servidor único y existente). La única forma de ver esto es usar capistrano-ext (que en realidad ya uso para implementar en mis entornos de prueba y de prueba), definiendo un nuevo "entorno" para cada servidor de aplicaciones ( app1 , app2 , etc.) y realizar una implementación utilizando algo como:

cap app1 app2 app3 deploy

¿Es esta la forma recomendada de hacerlo o hay un mejor enfoque?


Asumiendo capistrano multietapa :

En config/deploy/production :

role :app, "server1", "server2", "server3"

Ahora se cap deploy production un cap deploy production en los 3 servidores.


Esto es lo que he probado en rails 4 :

config / deploy.rb:

role :app, %w{server1 server2 server3}


Sí. Capistrano gestiona múltiples servidores de forma nativa. No hay necesidad de capistrano ext.
Solo necesitas definir múltiples roles

role :app, "myserver.example.com" role :db, "mysecondserver.example.com"

Por defecto sus tareas serán ejecutadas en cada servidor. Pero puede limitar una tarea solo a uno o algunos servidores.

task :migrate, :roles => [:app, :db] do # ... end

Aquí, la tarea se ejecutará solo en los roles de aplicación y db.

Puedes hacer lo mismo con el método de ejecución.

run "rake db:migrate", :roles => :db

El rake db: migrate se ejecutará solo en el servidor db.