masson
Version:
Module execution engine for cluster deployments.
30 lines (27 loc) • 913 B
text/coffeescript
util = require 'util'
connect = require 'ssh2-connect'
exec = require 'ssh2-exec'
{merge} = require '../misc'
config = require '../config'
params = require '../params'
params = params.parse()
module.exports = ->
config.servers.forEach (server) ->
config = merge {}, server,
host: server.ip or server.host # Prefer ip or host in case dns resolution is not yet active
username: 'root'
password: null
connect config, (err, ssh) ->
exec ssh, params.subcommand, (err, stdout, stderr) ->
util.print "\n"
if err
util.print "\x1b[31m#{server.host}\x1b[39m\n"
util.print "\n"
util.print "\x1b[31m#{err.stack or err.message}\x1b[39m"
else
util.print "\x1b[32m#{server.host}\x1b[39m\n"
util.print "\n"
util.print stdout.trim()
util.print stderr.trim()
util.print "\n"
ssh.end()