nodecloud
Version:
⚡️ The Node.js API for open cloud
145 lines (112 loc) • 8.11 kB
Markdown
<p align="center">
<img src="assets/logo.png">
</p>
[](https://badge.fury.io/js/nodecloud)
[](https://www.codacy.com/app/rehrumesh/nodecloud?utm_source=github.com&utm_medium=referral&utm_content=cloudlibz/nodecloud&utm_campaign=Badge_Grade)
[](https://travis-ci.org/cloudlibz/nodecloud)
NodeCloud is a standard library to get a single API on the open cloud with multiple providers.
Making open cloud easily accessible and managed.
```
npm install nodecloud
or
yarn add nodecloud
```
- 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
```js
const nodeCloudAwsPlugin = require("nodecloud-aws-plugin");
const providers = [
{
name: "aws",
tag: "aws",
plugin: nodeCloudAwsPlugin
}
];
module.exports = providers;
```
```js
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}`);
});
```
NodeCloud officialy supports AWS, GCP, Azure, DigitalOcean and AliCloud. If you want to use a community driven plugin override the providers list as follows.
```js
const nodeCloud = require("nodecloud");
const options = {
overrideProviders: true
};
const ncProviders = nodeCloud.getProviders(options);
```
```
$ git clone https://github.com/cloudlibz/nodecloud
$ cd nodecloud
$ yarn install
```
```
$ yarn test
```
MIT