nodecloud

1.0.0-beta.2 • Public • Published

NodeCloud

npm version Codacy Badge Build Status

NodeCloud is a standard library to get a single API on the open cloud with multiple providers. Making open cloud easily accessible and managed.

🚀 Install

npm install nodecloud
       or
yarn add nodecloud

📘 Service Providers

  • AliCloud
  • Amazon Web Services (AWS)
  • Azure
  • DigitalOcean
  • Google Cloud Platform (GCP)

📟 Service Types

  • *yet to be implemented
Service Category Service AWS GCP Azure DigitalOcean AliCloud
Compute IaaS EC2 Compute Engine Virtual Machine Droplets ECS
Faas AWS Lambda* Cloud Functions* Azure Functions* - Function Compute*
Containers ECS, EKS* Google Kubernetes Engine* AKS*, Azure Service Fabric* DO Kubernetes* Container Service*, Container Service for Kubernetes*
Containers (without infrastructure) AWS Fargate* Cloud Run* - - ECI*
Paas AWS Elastic Beanstalk* App Engine* App Service* - Simple Application Server*
Storage Object Storage S3 Cloud Storage Azure Blob Storage Spaces* Bucket (OSS)
Block Storage EBS Persistent Disks Disk Storage Volumes NAS*
Networking Load Balancer ELB Cloud Load Balancing* Azure Load Balancer* DO Load Balancer SLB
Peering/Dedicated Interconnect Direct Connect Cloud Interconnect* ExpressRoute* - Express Connect*
DNS Route53 Google Domains, Cloud DNS* Azure DNS* DO DNS* Alibaba Cloud DNS*
Databases RDBMS RDS, Amazon Aurora*, Amazon Redshift* Cloud SQL*, Cloud Spanner* SQL Database, Azure Database for MySQL*, Azure Database for PostgreSQL* Managed Databases(PostgreSQL* and MySQL*) ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL)
NoSQL: key-value DynamoDB Cloud Firestore*, Cloud Bigtable* Table Storage Managed Databases(Redis)* ApsaraDB for Redis*
NoSQL: indexed Amazon SimpleDB* Cloud Firestore* Cosmos DB* - ApsaraDB for MongoDB*
Security/ Authorization Identity Access Management AWS IAM Cloud IAM* Azure Active Directory*, Azure Role Based Access Control* - Resource Access Management*

✌️ How to setup

Make sure you have .nc.config.js file in the project root.

Content of .nc.config.js file is assumed as the following structure. It is an array of supported providers.

  1. name : Provider identifier, this can be used to identify the plugin at a glance.
  2. tag : Tag name that will be used to load the given provider internally.
  3. plugin : Plugin module

This config file can contain array of objects for all providers and all will be loaded. Supported values for name : aws, azure, alicloud, digitalocean, google

const nodeCloudAwsPlugin = require("nodecloud-aws-plugin");
 
const providers = [
  {
    name: "aws",
    tag: "aws",
    plugin: nodeCloudAwsPlugin
  }
];
 
module.exports = providers;

Supported providers

📣 Usage

const nodeCloud = require("nodecloud");
const optionsProvider = {
  overrideProviders: false
};
const ncProviders = nodeCloud.getProviders(optionsProvider);
const options = {
  apiVersion: "2016-11-15"
};
 
const params = {
  ImageId: "ami-10fd7020", // amzn-ami-2011.09.1.x86_64-ebs
  InstanceType: "t1.micro",
  KeyName: "nodeCloud", // key name of Key pair
  MinCount: 1,
  MaxCount: 1
};
const instanceParams = {
  Key: "Name",
  Value: "Node Cloud demo"
};
 
const ec2 = ncProviders.aws.compute(options);
ec2
  .createInstance(params, instanceParams)
  .then(res => {
    console.log(`All done ! ${res}`);
  })
  .catch(err => {
    console.log(`Oops something happened ${err}`);
  });

Override providers

NodeCloud officialy supports AWS, GCP, Azure, DigitalOcean and AliCloud. If you want to use a community driven plugin override the providers list as follows.

const nodeCloud = require("nodecloud");
const options = {
  overrideProviders: true
};
const ncProviders = nodeCloud.getProviders(options);

💻 Development setup

$ git clone https://github.com/cloudlibz/nodecloud
$ cd nodecloud
$ yarn install

✒️ Run unit tests

$ yarn test

📜 License

MIT

Package Sidebar

Install

npm i nodecloud

Weekly Downloads

5

Version

1.0.0-beta.2

License

Apache-2.0

Unpacked Size

89.2 kB

Total Files

25

Last publish

Collaborators

  • nodecloud