1.0.0-beta.2 • Published 4 years ago

nodecloud v1.0.0-beta.2

Weekly downloads
7
License
Apache-2.0
Repository
github
Last release
4 years ago

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 CategoryServiceAWSGCPAzureDigitalOceanAliCloud
ComputeIaaSEC2Compute EngineVirtual MachineDropletsECS
FaasAWS Lambda*Cloud Functions*Azure Functions*-Function Compute*
ContainersECS, EKS*Google Kubernetes Engine*AKS, Azure Service FabricDO Kubernetes*Container Service, Container Service for Kubernetes
Containers (without infrastructure)AWS Fargate*Cloud Run*--ECI*
PaasAWS Elastic Beanstalk*App Engine*App Service*-Simple Application Server*
StorageObject StorageS3Cloud StorageAzure Blob StorageSpaces*Bucket (OSS)
Block StorageEBSPersistent DisksDisk StorageVolumesNAS*
NetworkingLoad BalancerELBCloud Load Balancing*Azure Load Balancer*DO Load BalancerSLB
Peering/Dedicated InterconnectDirect ConnectCloud Interconnect*ExpressRoute*-Express Connect*
DNSRoute53Google Domains, Cloud DNS*Azure DNS*DO DNS*Alibaba Cloud DNS*
DatabasesRDBMSRDS, Amazon Aurora, Amazon RedshiftCloud SQL, Cloud SpannerSQL Database, Azure Database for MySQL, Azure Database for PostgreSQLManaged Databases(PostgreSQL and MySQL)ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL)
NoSQL: key-valueDynamoDBCloud Firestore, Cloud BigtableTable StorageManaged Databases(Redis)*ApsaraDB for Redis*
NoSQL: indexedAmazon SimpleDB*Cloud Firestore*Cosmos DB*-ApsaraDB for MongoDB*
Security/ AuthorizationIdentity Access ManagementAWS IAMCloud 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