From c4b20c914671c5e641c12141d90733e7a809c1e8 Mon Sep 17 00:00:00 2001 From: Lloyd Hilaiel <lloyd@hilaiel.com> Date: Fri, 1 Jun 2012 13:34:21 +0300 Subject: [PATCH] new deploy script that's a lil' wrapper around awsbox, extracts stuff from env and passes it to awsbox --- foo | 0 scripts/deploy.js | 82 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) delete mode 100644 foo create mode 100755 scripts/deploy.js diff --git a/foo b/foo deleted file mode 100644 index e69de29bb..000000000 diff --git a/scripts/deploy.js b/scripts/deploy.js new file mode 100755 index 000000000..4ee22b422 --- /dev/null +++ b/scripts/deploy.js @@ -0,0 +1,82 @@ +#!/usr/bin/env node + +var path = require('path'), +child_process = require('child_process'); + +/* + * A thin wrapper around awsbox that expects certain env + * vars and invokes awsbox for ya to deploy a VM. + */ + +if (!process.env['AWS_ID'] || ! process.env['AWS_SECRET']) { + console.log("You haven't defined AWS_ID and AWS_SECRET in the environment"); + console.log("Get these values from the amazon web console and try again."); + process.exit(1); +} + +if (!process.env['ZERIGO_DNS_KEY'] && process.env['PERSONA_DEPLOY_DNS_KEY']) { + process.env['ZERIGO_DNS_KEY'] = process.env['PERSONA_DEPLOY_DNS_KEY']; +} + +var cmd = path.join(__dirname, '..', 'node_modules', '.bin', 'awsbox'); +cmd = path.relative(process.env['PWD'], cmd); + +if (process.argv.length > 1 && + process.argv[2] === 'create' || + process.argv[2] === 'deploy') +{ + var options = {}; + + if (process.argv.length > 3) options.n = process.argv[3]; + + if (process.env['PERSONA_SSL_PRIV'] || process.env['PERSONA_SSL_PUB']) { + options.p = process.env['PERSONA_SSL_PUB']; + options.s = process.env['PERSONA_SSL_PRIV']; + } + + if (process.env['ZERIGO_DNS_KEY']) { + options.d = true; + + // when we have a DNS key, we can set a hostname! + var scheme = (options.p ? 'https' : 'http') + '://'; + + if (process.env['PERSONA_DEPLOYMENT_HOSTNAME']) { + options.u = scheme + process.env['PERSONA_DEPLOYMENT_HOSTNAME']; + } else if (options.n) { + options.u = scheme + options.n + ".personatest.org"; + } + + } else { + console.log('WARNING: No DNS key defined in the environment! ' + + 'I cannot set up DNS for you. We\'ll do this by IP.'); + } + + // pass through/override with user provided vars + for (var i = 3; i < process.argv.length; i++) { + var k = process.argv[i]; + if (i + 1 < process.argv.length && k.length === 2 && k[0] === '-') { + options[k[1]] = process.argv[++i]; + } + } + + if (process.env['PERSONA_EPHEMERAL_CONFIG']) { + options.x = process.env['PERSONA_EPHEMERAL_CONFIG']; + } + + cmd += " create"; + + Object.keys(options).forEach(function(opt) { + cmd += " -" + opt; + cmd += typeof options[opt] === 'string' ? " " + options[opt] : ""; + }); +} else { + cmd += " " + process.argv.slice(2).join(' '); +} + +console.log("awsbox cmd: " + cmd); +var cp = child_process.exec(cmd, function(err) { + if (err) process.exit(err.code); + else process.exit(0); +}); +cp.stdout.pipe(process.stdout); +cp.stderr.pipe(process.stderr); -- GitLab