What is AWS NAT Instances & NAT Gateways?

by XDK 4. August 2019 06:35


A NAT (Network Address Translation) instance is, like a bastion host, an EC2 instance that lives in your public subnet. A NAT instance, however, allows your private instances outgoing connectivity to the internet while at the same time blocking inbound traffic from the internet.

A NAT (Network Address Translation) Gateways provide the same functionality as a NAT instance, however, a NAT Gateway is an AWS managed NAT service. As a result, these NAT Gateways offer greater availability and bandwidth and require less configuration and administration.

Comparison of NAT Instances and NAT Gateways

Bastion host : A bastion host is a special-purpose computer on a network specifically designed and configured to withstand attacks. The computer generally hosts a single application, for example a proxy server, and all other services are removed or limited to reduce the threat to the computer.

Tags: ,

Amazon Web Service

CIDR block (Classless Inter-Domain Routing) interpretation

by XDK 4. August 2019 06:09


CIDR (Classless Inter-Domain Routing) notation is a compact representation of an IP address and its associated routing prefix. The notation is constructed from an IP address, a slash ('/') character, and a decimal number. The number is the count of leading 1 bits in the subnet mask. Larger values here indicate smaller networks. CIDR was developed as an alternative to traditional subnetting. The idea is that you can add a specification in the IP address itself as to the number of significant bits that make up the routing or networking portion.

IPv4 CIDR blocks interpretation :

IPv4 : a.b.c.d
Bits : --> 32 bits

CIDR block Notation : a.b.c.d/prefix where prefix is the number of IP address the network can have.

Example :

IPs calculation for the above CIDR block will be [192(8bits).168(8bits).100(8bits).0(8bits)] = 2^32-22 = 2^10 = 1,024
where 32 -> 8 * 4 bits , 22 -> prefix

Total number of IPs for CIDR block will be 1,024 -> 255 -> 255 -> 255 -> 255
where 0 -> 255 = 256 IPs

Total IPs = 256 * 4 = 1,024

By default, AWS uses 5 IPs out of these 256 IPs, So the number of IPs released will be 256 - 5 = 251

IPs used by AWS:

0 -> Network Address
1 -> Amazon VPC Routing
2 -> Domain Name System (DNS)
3 -> Future use by AWS
255 -> Broadcasting

In AWS, a subnet can have 1 primary CIDR block and 4 secondary CIDR blocks


Amazon Web Service

What is the difference between Security Group and Network ACL in AWS?

by XDK 3. August 2019 19:04


 Security Group vs Network ACL (Network Access Control List)


Amazon Web Service

Shell Scripting with AWS Command Line Interface

by XDK 3. August 2019 00:12


1) List of EC2 instance IDs:
aws ec2 describe-instances | grep InstanceId | tr '",' ' '

2) List of Load Balancers by Name:
aws elbv2 describe-load-balancers | grep LoadBalancerName | tr '",' ' '

3) List of Target Groups by Name:
aws elbv2 describe-target-groups | grep TargetGroupName | tr '",' ' '

4) List of Autoscale Groups by Name:
aws autoscaling describe-auto-scaling-groups | grep AutoScalingGroupName | tr '",' ' '

5) List of Launch configurations by Name:
aws autoscaling describe-launch-configurations | grep LaunchConfigurationName | tr '",' ' '

 6) List of available IAM users by Name:
aws iam list-users | grep UserName | tr '",' ' '


Tags: ,

Amazon Web Service

How do I run .sh files in Linux?

by XDK 3. August 2019 00:07


The procedure to run the .sh file shell script on Linux is as follows:

Set execute permission on your script:
chmod +x <script-name>.sh

To run your script, enter:
./<script-name>.sh OR sh <script-name>.sh OR bash script-name>.sh

Tags: ,

Amazon Web Service

User-data bootstrap scripts is not running on the Amazon Linux AMI

by XDK 1. August 2019 05:43

Quick fix:

Adding "#cloud-boothook" command to the script fixes the issue.


echo 'User-data bootstrap script invoked' > /home/ec2-user/bootstrap-script-output.txt


Amazon Web Service

List of default ssh usernames for connecting to EC2 Instances

by XDK 31. July 2019 09:09


Amazon Web Service

Work Item Relation Types - List

by XDK 23. July 2019 02:12

GET https://{instance}/{collection}/_apis/wit/workitemrelationtypes?api-version=5.0

{attributes: {…}, referenceName: "System.LinkTypes.Related-Forward", name: "Related", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Hierarchy-Forward", name: "Child", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Hierarchy-Reverse", name: "Parent", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Dependency-Forward", name: "Successor", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Dependency-Reverse", name: "Predecessor", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.TestCase.SharedStepReferencedBy-Forward", name: "Test
 Case", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.TestCase.SharedStepReferencedBy-Reverse", name: "Shared
 Steps", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.Common.TestedBy-Forward", name: "Tested
 By", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.Common.TestedBy-Reverse", name: "Tests", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Duplicate-Forward", name: "Duplicate", url: null, _links: null}
{attributes: {…}, referenceName: "System.LinkTypes.Duplicate-Reverse", name: "Duplicate
 Of", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.TestCase.SharedParameterReferencedBy-Forward", name: "Referenced
 By", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.TestCase.SharedParameterReferencedBy-Reverse", name: "References", url: null, _links: null}
{attributes: {…}, referenceName: "Hyperlink", name: null, url: null, _links: null}
{attributes: {…}, referenceName: "ArtifactLink", name: null, url: null, _links: null}

{attributes: {…}, referenceName: "Microsoft.VSTS.Common.Affects-Forward", name: "Affected by", url: null, _links: null}
{attributes: {…}, referenceName: "Microsoft.VSTS.Common.Affects-Reverse", name: "Affects", url: null, _links: null}



Azure DevOps Services | REST APIs

REST API Versioning

by XDK 19. July 2019 18:48


API version can be specified either in the header of the HTTP request or as a URL query parameter:

HTTP request header: Accept: application/json;api-version=1.0
Query parameter: GET {url}/{organization}/_apis/{area}/{resource}?api-version=1.

Supported versions

Product 1.0 2.0 3.0 4.0 5.0
Azure DevOps Services X X X X X
Azure DevOps Server 2019 X X X X X
Team Foundation Server 2018 X X X X -
Team Foundation Server 2017 X X X - -
Team Foundation Server 2015 X X - - -

Note : Once a preview API is deactivated, requests that specify a -preview version will be rejected (for example, 1.0-preview.1, 1.0-preview.2).



Azure DevOps Services | REST APIs | Team Foundation Server

How to upgrade TFS vNext build agents?

by XDK 30. July 2017 00:37


Right-click the agent pool and choose "Update all agents", it will upgrade the agents to the version of the on-premise TFS server




The information provided here is based on my expreriences, troubleshooting and online/offline findings. It can be used as is on your own risk without any warranties and I impose no rights.

About the author

My name is Xavier Dilip Kumar Jayaraj and I am a Software Configuration Management Engineer with a background in application development, Build & packaging using Install Shield.

Profile in LinkedIn , PCEP-Certified , Azure-DevOps-C1

DevOps Tools

ALM tools:
Azure DevOps
IBM Rational
CA Agile Central-Rally
CollabNet VersionOne

Configuration tools:
• Puppet
• AWS OpsWorks
• Ansible

Build automation tools:
Apache Ant 
Apache Maven

Continuous Integration tools:

Testing tools:

Version control system tools:
Team Foundation Server

Code review tools:
Bitbucket Server

Continuous Delivery/release management tools:
XL Release
Serena Release
Octopus Deploy

Quotes I Like

"Failure will never overtake me if my determination to succeed is strong enough."  - Dr. APJ. Abdul Kalam

"Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it." - Bruce Lee

"Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important." - Bill Gates

"Innovation distinguishes between a leader and a follower." - Steve Jobs

Knowledge Base Articles