Socket
Socket
Sign inDemoInstall

azure-api

Package Overview
Dependencies
21
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    azure-api

A really simple promise-based NodeJS API for creation and configuration of Azure resources.


Version published
Weekly downloads
33
increased by3200%
Maintainers
1
Install size
2.85 MB
Created
Weekly downloads
 

Readme

Source

azure-api

A really simple promise-based NodeJS API for creation and configuration of Azure resources.

You must have azure-cli installed and authenticated to use this.

This API is used in my MEAN stack provisioning script. It's a good example of how to use this.

Todo (please join the effort!):

  • Support for certificates/keys.
  • Functions to delete networks and VMs.

To install:

npm install --save azure-api

Then in your NodeJS script:

var config = {
	verbose: true
};
var azure = require('azure-api')(config);

To create a network:

var networkName = "somenetwork";
var location = "Australia East";

azure.createNetwork(networkName, location)
	.then(function () {
		// network was created sucessfully.
	})
	.catch(function (err) {
		// some error occurred.
	}); 

To create a VM:

var vm = {
	name: "somevm",
	networkName: "somenetwork",
	imageName: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-trusty-14_04_2-LTS-amd64-server-20150708-en-us-30GB",
	user: "username", // User name for the VM.
	pass: "password", // Password for the VM.
	endpoints: ... list of end points ...
};

azure.createVM(vm)
	.then(function () {
		// VM was created sucessfully.
	})
	.catch(function (err) {
		// some error occurred.
	}); 

End points are specified as follows:

var endpoints = [
	{
		name: 'HTTP',
		externalPort: 80,
		internalPort: 3000,						
	},
	// etc, etc
],

To run a provisioning shell script on the remote machine:

var host = "somevm.cloudapp.net";
var user = "username";
var pass = "password";
var scriptFile = "provision.sh"; // The named script must exist on the local machine.

azure.runSshScript(host, user, pass, scriptFile)
	.then(function () {
		// the script completed successfully.
	})
	.catch(function (err) {
		// some error occurred.
	});

You can also call a function that waits for you VM to have started:

var vmName = "somevm";

azure.waitVmRunning(vmName)
	.then(function () {
		// vm has started.
	})
	.catch(function (err) {
		// some error occurred.
	});

The end result is you can wire all these functions together to provision your cloud:

var networkName = "somenetwork";
var location = "Australia East";
var host = vmName + ".cloudapp.net";

var vm = {
	name: "somevm",
	networkName: networkName,
	imageName: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-trusty-14_04_2-LTS-amd64-server-20150708-en-us-30GB",
	user: "username", // User name for the VM.
	pass: "password", // Password for the VM.
	endpoints: ... list of end points ...
};

var provisionScriptFile = "provision.sh";

azure.createNetwork(networkName, location)
	.then(function () {
		return azure.createVM(vm);
	})
	.then(function () {
		return azure.waitVmRunning(vm.name);
	})
	.then(function () {
		return azure.runSshScript(host, vm.user, vm.pass, provisionScriptFile)
	})
	.then(function () {
		// provisioning completed successfully.
	})
	.catch(function (err) {
		// some error occurred.
	}); 

Or you could just call provisionVM:

var networkName = "somenetwork";
var location = "Australia East";

var vm = {
	name: "somevm",
	networkName: networkName,
	imageName: "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-trusty-14_04_2-LTS-amd64-server-20150708-en-us-30GB",
	user: "username", // User name for the VM.
	pass: "password", // Password for the VM.
	endpoints: ... list of end points ...
	provisionScript: "provision.sh",
};

var provisionScriptFile = "provision.sh";

azure.createNetwork(networkName, location)
	.then(function () {
		return azure.provisionVM(vm);
	})
	.then(function () {
		// provisioning completed successfully.
	})
	.catch(function (err) {
		// some error occurred.
	}); 

Have fun! Thanks for coming to the party.

Keywords

FAQs

Last updated on 27 Apr 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc