Skip to content

newsuk/DeCidr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeCidr npm versionBuild Status

Brought to you by The Times Tooling team  🛠

Overview

DeCidr is a Node.js application that generates a non-clashing CIDR block to be used with a peering connection.

Use case

Let's say you have a VPC called 'Backend' and you would like to peer many 'Front End' VPCs to it. To do this you can use 'Peering Connections' from AWS, which require non-clashing CIDR blocks. For each peering connection you will need to ensure the CIDR block does not clash with the backend CIDR block, or any of the other peerings.

Before creating your new VPC, DeCidr will read your 'Backend' VPC's Route Table(s) to determine what CIDR ranges are taken. It will then provide you with a valid, non-clashing CIDR range, to use on your new front end VPC.

Installation

Run yarn global add decidr to install the application globally.

Use

To use the tool you will need to provide all of the below required values. When specifying the tag value, you can use wild cards to match multiple route tables. This will ensure that the CIDR range does not clash with any of the matching route tables.

Verbose:

DeCidr --blockSize 24 --rangeStart 10.180.0.0 --rangeEnd 10.200.0.0 --tagNames Name --tagValues private*-rtb

Minimal:

DeCidr -b 24 -s 10.180.0.0 -e 10.200.0.0 -n Name -x private*-rtb

Output:

10.180.0.0/24

You can also provide multiple route tables, separated with a comma, in the following way (note the multiple tagNames):

DeCidr --blockSize 24 --rangeStart 10.180.0.0 --rangeEnd 10.200.0.0 --tagNames Name,Name --tagValues private*-rtb,public*-rtb

Extra

-v --version - Prints the version of DeCidr

-h --help - Provides tool help information

Exit Codes

Exit Code 1: Not all arguments have been provided

Exit Code 2: No availability in the range provided

Development

yarn to get the dependencies

yarn build to build the project (must be done when making changes)

npm link to create the symbolic link for running the binary from your terminal e.g. DeCidr -v

Test

yarn test to run all tests with coverage

yarn test:unit to run the unit tests

yarn test:e2e to run the end-to-end tests