roarcli
Version:
Overview:
168 lines (117 loc) • 6.28 kB
JavaScript
'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