UNPKG

roarcli

Version:
168 lines (117 loc) 6.28 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (args, options, logger) { if (options.tmp) { workingDir = options.tmp; } if (options.path) { installDir = options.path; } if (options.api) { apiURL = options.api; } logger.info('Setting up a working directory...', workingDir); _shelljs2.default.mkdir('-p', workingDir); _shelljs2.default.cd(workingDir); logger.info('Downloading the latest roar-agent...'); (0, _request2.default)('https://s3-us-west-2.amazonaws.com/liongard/agent/roar-agent.latest.zip').pipe(_fs2.default.createWriteStream('./roar-agent.latest.zip')).on('close', function () { logger.info('Setting up Roar Agent home...'); _shelljs2.default.mkdir('-p', '' + installDir); _shelljs2.default.chmod(755, '' + installDir); _shelljs2.default.mkdir('-p', '~/.roar-agent/logs'); _shelljs2.default.chmod(755, '~/.roar-agent/logs'); logger.info('Unpacking roar-agent...'); _fs2.default.createReadStream('./roar-agent.latest.zip').pipe(_unzipStream2.default.Extract({ path: installDir })); console.log('Files decompressed'); logger.info('Registering the agent with Roar...'); _superagent2.default.post('https://' + apiURL + '/api/v1.0/controllers/setup/').send({ name: args.name, description: args.description, platform: _os2.default.platform() === 'darwin' ? 'mac' : _os2.default.platform() === 'linux' ? 'linux' : _os2.default.platform() === 'win32' || _os2.default.platform() === 'win64' ? 'windows' : 'not supported', arch: _os2.default.arch(), memory: _os2.default.totalmem(), freemem: _os2.default.freemem(), cpu: _os2.default.cpus().length, zone: options.zone.toLowerCase() === 'private' ? 'private' : options.zone.toLowerCase() === 'public' ? 'public' : 'private' }).set('Accept', 'application/json').end(function (err, res) { if (err) { logger.error('Failed to register the controller with Roar', err); process.exit(1); } logger.info('Installing Roar Agent dependencies...'); _shelljs2.default.cd(installDir); _shelljs2.default.exec('npm install --production', { silent: true }); logger.info('Launching Roar Agent...'); var cmd = 'node build/index.js roar-rabbitmq ' + apiURL + ' ' + res.body.id + ' ' + res.body.queue + ' ' + res.body.key + ' ' + args.name; var fullScriptPath = _path2.default.resolve('./build/index.js'); var cmdFullPath = 'node ' + fullScriptPath + ' roar-rabbitmq ' + apiURL + ' ' + res.body.id + ' ' + res.body.queue + ' ' + res.body.key + ' ' + args.name; logger.info('IP:' + res.body.ip); if (_os2.default.platform() !== 'win32' && _os2.default.platform() !== 'win64') { logger.info('If you are not using the RMM scipt, please modify your /etc/hosts by running the command: echo "' + res.body.ip + ' roar-rabbitmq" >> /etc/hosts'); _fs2.default.writeFileSync(process.cwd() + '/roar-agent-startup.sh', cmd, { mode: 493 }); if (!args.nolaunch) { execSync(process.cwd() + '/roar-agent-startup.sh'); } var script = _fs2.default.readFileSync(process.cwd() + '/scripts/heartbeat.sh', { encoding: 'utf8' }); script = script.replace('{CMD}', cmdFullPath); _fs2.default.writeFileSync(process.cwd() + '/heartbeat.sh', script, { mode: 493 }); execSync('(crontab -l 2>/dev/null; echo "*/5 * * * * ' + process.cwd() + '/heartbeat.sh") | crontab -'); } else { logger.info('If you are not using the RMM scipt, please modify your C:\\Windows\\system32\\drivers\\etc\\hosts by running the Powershell command: Add-Content c:\\Windows\\system32\\drivers\\etc\\hosts "' + res.body.ip + ' roar-rabbitmq"'); var _script = _fs2.default.readFileSync(process.cwd() + '/scripts/service.js', { encoding: 'utf8' }); _script = _script.replace('{{URL}}', apiURL); _script = _script.replace('{{AGENT_ID}}', res.body.id); _script = _script.replace('{{AGENT_NAME}}', args.name); _script = _script.replace('{{QUEUE}}', res.body.queue); _script = _script.replace('{{ACCESS_KEY}}', res.body.key); _script = _script.replace('{{SCRIPT}}', fullScriptPath.replace(/\\/g, '\\\\')); _fs2.default.writeFileSync(process.cwd() + '/scripts/service.js', _script, { mode: 493 }); if (!args.nolaunch) { execSync(cmd); } else { _shelljs2.default.cd(process.cwd() + '/scripts'); _shelljs2.default.exec('npm install node-windows', { silent: true }); _shelljs2.default.exec('node service.js', { silent: false }); } logger.info('ID:' + res.body.id); } }); }); }; var _http = require('http'); var _http2 = _interopRequireDefault(_http); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _shelljs = require('shelljs'); var _shelljs2 = _interopRequireDefault(_shelljs); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); var _child_process = require('child_process'); var _child_process2 = _interopRequireDefault(_child_process); var _https = require('https'); var _https2 = _interopRequireDefault(_https); var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _request = require('request'); var _request2 = _interopRequireDefault(_request); var _superagent = require('superagent'); var _superagent2 = _interopRequireDefault(_superagent); var _util = require('util'); var _util2 = _interopRequireDefault(_util); var _os = require('os'); var _os2 = _interopRequireDefault(_os); var _unzipStream = require('unzip-stream'); var _unzipStream2 = _interopRequireDefault(_unzipStream); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var execSync = _child_process2.default.execSync; var workingDir = '.'; var installDir = './liongard'; var apiURL = 'sandbox.liongard.com'; module.exports = exports['default']; //# sourceMappingURL=setup-agent.js.map