diff --git a/lib/mrsk/configuration.rb b/lib/mrsk/configuration.rb index 015d38ee..b3d8bc5c 100644 --- a/lib/mrsk/configuration.rb +++ b/lib/mrsk/configuration.rb @@ -17,8 +17,9 @@ class Mrsk::Configuration ensure_required_keys_present end - def servers - ENV["SERVERS"] || config.servers + def hosts + ENV["HOSTS"] || config.servers + end end def version diff --git a/lib/tasks/mrsk/app.rake b/lib/tasks/mrsk/app.rake index 1e3afc9a..0e62c9ca 100644 --- a/lib/tasks/mrsk/app.rake +++ b/lib/tasks/mrsk/app.rake @@ -14,12 +14,12 @@ namespace :mrsk do desc "Pull app image from the registry onto servers" task :pull do - on(MRSK_CONFIG.servers) { execute *app.pull } + on(MRSK_CONFIG.hosts) { execute *app.pull } end desc "Run app on servers (or start them if they've already been run)" task :run do - on(MRSK_CONFIG.servers) do |host| + on(MRSK_CONFIG.hosts) do |host| begin execute *app.run rescue SSHKit::Command::Failed => e @@ -33,32 +33,14 @@ namespace :mrsk do end end - desc "Run app on servers (or start them if they've already been run)" - task :run do - MRSK_CONFIG.roles.each do |role| - on(MRSK_CONFIG.servers(role: role)) do |host| - begin - execute *app.run(role: role) - rescue SSHKit::Command::Failed => e - if e.message =~ /already in use/ - puts "Container with same version already deployed on #{host}, starting that instead" - execute *app.start, host: host - else - raise - end - end - end - end - end - desc "Start existing app on servers" task :start do - on(MRSK_CONFIG.servers) { execute *app.start, raise_on_non_zero_exit: false } + on(MRSK_CONFIG.hosts) { execute *app.start, raise_on_non_zero_exit: false } end desc "Stop app on servers" task :stop do - on(MRSK_CONFIG.servers) { execute *app.stop, raise_on_non_zero_exit: false } + on(MRSK_CONFIG.hosts) { execute *app.stop, raise_on_non_zero_exit: false } end desc "Start app on servers (use VERSION= to designate which version)" @@ -66,46 +48,46 @@ namespace :mrsk do desc "Display information about app containers" task :info do - on(MRSK_CONFIG.servers) { |host| puts "App Host: #{host}\n" + capture(*app.info) + "\n\n" } + on(MRSK_CONFIG.hosts) { |host| puts "App Host: #{host}\n" + capture(*app.info) + "\n\n" } end desc "Execute a custom task on servers passed in as CMD='bin/rake some:task'" task :exec do - on(MRSK_CONFIG.servers) { |host| puts "App Host: #{host}\n" + capture(*app.exec(ENV["CMD"])) + "\n\n" } + on(MRSK_CONFIG.hosts) { |host| puts "App Host: #{host}\n" + capture(*app.exec(ENV["CMD"])) + "\n\n" } end namespace :exec do desc "Execute Rails command on servers, like CMD='runner \"puts %(Hello World)\"" task :rails do - on(MRSK_CONFIG.servers) { |host| puts "App Host: #{host}\n" + capture(*app.exec("bin/rails", ENV["CMD"])) + "\n\n" } + on(MRSK_CONFIG.hosts) { |host| puts "App Host: #{host}\n" + capture(*app.exec("bin/rails", ENV["CMD"])) + "\n\n" } end desc "Execute a custom task on the first defined server" task :once do - on(MRSK_CONFIG.servers.first) { |host| puts capture(*app.exec(ENV["CMD"])) } + on(MRSK_CONFIG.hosts.first) { |host| puts capture(*app.exec(ENV["CMD"])) } end namespace :once do desc "Execute Rails command on the first defined server, like CMD='runner \"puts %(Hello World)\"" task :rails do - on(MRSK_CONFIG.servers.first) { puts capture(*app.exec("bin/rails", ENV["CMD"])) } + on(MRSK_CONFIG.hosts.first) { puts capture(*app.exec("bin/rails", ENV["CMD"])) } end end end desc "List all the app containers currently on servers" task :containers do - on(MRSK_CONFIG.servers) { |host| puts "App Host: #{host}\n" + capture(*app.list_containers) + "\n\n" } + on(MRSK_CONFIG.hosts) { |host| puts "App Host: #{host}\n" + capture(*app.list_containers) + "\n\n" } end desc "Tail logs from app containers" task :logs do - on(MRSK_CONFIG.servers) { execute *app.logs } + on(MRSK_CONFIG.hosts) { execute *app.logs } end desc "Remove app containers and images from servers" task remove: %i[ stop ] do - on(MRSK_CONFIG.servers) do + on(MRSK_CONFIG.hosts) do execute *app.remove_containers execute *app.remove_images end diff --git a/lib/tasks/mrsk/prune.rake b/lib/tasks/mrsk/prune.rake index 76479c1c..c6165fa2 100644 --- a/lib/tasks/mrsk/prune.rake +++ b/lib/tasks/mrsk/prune.rake @@ -7,12 +7,12 @@ namespace :mrsk do namespace :prune do desc "Prune unused images older than 30 days" task :images do - on(MRSK_CONFIG.servers) { execute "docker image prune -f --filter 'until=720h'" } + on(MRSK_CONFIG.hosts) { execute "docker image prune -f --filter 'until=720h'" } end desc "Prune stopped containers for the service older than 3 days" task :containers do - on(MRSK_CONFIG.servers) { execute "docker container prune -f --filter label=service=#{MRSK_CONFIG.service} --filter 'until=72h'" } + on(MRSK_CONFIG.hosts) { execute "docker container prune -f --filter label=service=#{MRSK_CONFIG.service} --filter 'until=72h'" } end end end diff --git a/lib/tasks/mrsk/registry.rake b/lib/tasks/mrsk/registry.rake index 390da856..28dd5920 100644 --- a/lib/tasks/mrsk/registry.rake +++ b/lib/tasks/mrsk/registry.rake @@ -7,12 +7,12 @@ namespace :mrsk do desc "Login to the registry locally and remotely" task :login do run_locally { execute *registry.login } - on(MRSK_CONFIG.servers) { execute *registry.login } + on(MRSK_CONFIG.hosts) { execute *registry.login } end desc "Logout of the registry remotely" task :logout do - on(MRSK_CONFIG.servers) { execute *registry.logout } + on(MRSK_CONFIG.hosts) { execute *registry.logout } end end end diff --git a/lib/tasks/mrsk/server.rake b/lib/tasks/mrsk/server.rake index 0953e689..d5ac4f48 100644 --- a/lib/tasks/mrsk/server.rake +++ b/lib/tasks/mrsk/server.rake @@ -5,7 +5,7 @@ namespace :mrsk do desc "Setup Docker on the remote servers" task :bootstrap do # FIXME: Detect when apt-get is not available and use the appropriate alternative - on(MRSK_CONFIG.servers) { execute "apt-get install docker.io -y" } + on(MRSK_CONFIG.hosts) { execute "apt-get install docker.io -y" } end end end diff --git a/lib/tasks/mrsk/traefik.rake b/lib/tasks/mrsk/traefik.rake index b7b1f370..cbee4b0d 100644 --- a/lib/tasks/mrsk/traefik.rake +++ b/lib/tasks/mrsk/traefik.rake @@ -6,17 +6,17 @@ namespace :mrsk do namespace :traefik do desc "Run Traefik on servers" task :run do - on(MRSK_CONFIG.servers) { execute *traefik.run, raise_on_non_zero_exit: false } + on(MRSK_CONFIG.hosts) { execute *traefik.run, raise_on_non_zero_exit: false } end desc "Start existing Traefik on servers" task :start do - on(MRSK_CONFIG.servers) { execute *traefik.start, raise_on_non_zero_exit: false } + on(MRSK_CONFIG.hosts) { execute *traefik.start, raise_on_non_zero_exit: false } end desc "Stop Traefik on servers" task :stop do - on(MRSK_CONFIG.servers) { execute *traefik.stop, raise_on_non_zero_exit: false } + on(MRSK_CONFIG.hosts) { execute *traefik.stop, raise_on_non_zero_exit: false } end desc "Restart Traefik on servers" @@ -24,12 +24,12 @@ namespace :mrsk do desc "Display information about Traefik containers from servers" task :info do - on(MRSK_CONFIG.servers) { |host| puts "Traefik Host: #{host}\n" + capture(*traefik.info) + "\n\n" } + on(MRSK_CONFIG.hosts) { |host| puts "Traefik Host: #{host}\n" + capture(*traefik.info) + "\n\n" } end desc "Remove Traefik container and image from servers" task remove: %i[ stop ] do - on(MRSK_CONFIG.servers) do + on(MRSK_CONFIG.hosts) do execute *traefik.remove_container execute *traefik.remove_image end