Last active
August 3, 2018 14:07
-
-
Save Ankit-Kulkarni/1ec9885bf852d86f27fc16df3e74a8e5 to your computer and use it in GitHub Desktop.
Create ec2 instance with custom root volume size using aws cloudformation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "AWSTemplateFormatVersion": "2010-09-09", | |
| "Description": "AWS cloudformation template to create EC2 instancewith custom root volume size", | |
| "Parameters": { | |
| "InstanceType": { | |
| "Description": "WebServer EC2 instance type", | |
| "Type": "String", | |
| "Default": "t2.small", | |
| "AllowedValues": [ | |
| "t1.micro", | |
| "t2.nano", | |
| "t2.micro", | |
| "t2.small", | |
| "t2.medium", | |
| "t2.large", | |
| "m1.small", | |
| "m1.medium", | |
| "m1.large", | |
| "m1.xlarge", | |
| "m2.xlarge", | |
| "m2.2xlarge", | |
| "m2.4xlarge", | |
| "m3.medium", | |
| "m3.large", | |
| "m3.xlarge", | |
| "m3.2xlarge", | |
| "m4.large", | |
| "m4.xlarge", | |
| "m4.2xlarge", | |
| "m4.4xlarge", | |
| "m4.10xlarge", | |
| "c1.medium", | |
| "c1.xlarge", | |
| "c3.large", | |
| "c3.xlarge", | |
| "c3.2xlarge", | |
| "c3.4xlarge", | |
| "c3.8xlarge", | |
| "c4.large", | |
| "c4.xlarge", | |
| "c4.2xlarge", | |
| "c4.4xlarge", | |
| "c4.8xlarge", | |
| "g2.2xlarge", | |
| "g2.8xlarge", | |
| "r3.large", | |
| "r3.xlarge", | |
| "r3.2xlarge", | |
| "r3.4xlarge", | |
| "r3.8xlarge", | |
| "i2.xlarge", | |
| "i2.2xlarge", | |
| "i2.4xlarge", | |
| "i2.8xlarge", | |
| "d2.xlarge", | |
| "d2.2xlarge", | |
| "d2.4xlarge", | |
| "d2.8xlarge", | |
| "hi1.4xlarge", | |
| "hs1.8xlarge", | |
| "cr1.8xlarge", | |
| "cc2.8xlarge", | |
| "cg1.4xlarge" | |
| ], | |
| "ConstraintDescription": "must be a valid EC2 instance type." | |
| }, | |
| "KeyName": { | |
| "Description": "Name of an existing EC2 KeyPair to enable SSH access to the instance", | |
| "Type": "AWS::EC2::KeyPair::KeyName", | |
| "ConstraintDescription": "must be the name of an existing EC2 KeyPair." | |
| }, | |
| "VpcId": { | |
| "Description": "Id of the vpc", | |
| "Type": "AWS::EC2::VPC::Id", | |
| "ConstraintDescription": "must be the name of an existing VPC" | |
| }, | |
| "SSHLocation": { | |
| "Description": " The IP address range that can be used to SSH to the EC2 instances", | |
| "Type": "String", | |
| "MinLength": "9", | |
| "MaxLength": "18", | |
| "Default": "0.0.0.0/0", | |
| "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", | |
| "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." | |
| }, | |
| "SubnetID": { | |
| "Description": " The subnet id", | |
| "Type": "AWS::EC2::Subnet::Id" | |
| }, | |
| "Ec2RootVolumeSize": { | |
| "Description": " Ec2 root volume size", | |
| "Type": "String", | |
| "Default": "30" | |
| } | |
| }, | |
| "Mappings": { | |
| "RegionMap": { | |
| "us-east-1": { | |
| "TestAz": "us-east-1a" | |
| } | |
| }, | |
| "Region2Examples": { | |
| "us-east-1": { | |
| "Examples": "https://s3.amazonaws.com/cloudformation-examples-us-east-1" | |
| }, | |
| "us-west-2": { | |
| "Examples": "https://s3-us-west-2.amazonaws.com/cloudformation-examples-us-west-2" | |
| }, | |
| "us-west-1": { | |
| "Examples": "https://s3-us-west-1.amazonaws.com/cloudformation-examples-us-west-1" | |
| }, | |
| "eu-west-1": { | |
| "Examples": "https://s3-eu-west-1.amazonaws.com/cloudformation-examples-eu-west-1" | |
| }, | |
| "eu-west-2": { | |
| "Examples": "https://s3-eu-west-2.amazonaws.com/cloudformation-examples-eu-west-2" | |
| }, | |
| "eu-west-3": { | |
| "Examples": "https://s3-eu-west-3.amazonaws.com/cloudformation-examples-eu-west-3" | |
| }, | |
| "eu-central-1": { | |
| "Examples": "https://s3-eu-central-1.amazonaws.com/cloudformation-examples-eu-central-1" | |
| }, | |
| "ap-southeast-1": { | |
| "Examples": "https://s3-ap-southeast-1.amazonaws.com/cloudformation-examples-ap-southeast-1" | |
| }, | |
| "ap-northeast-1": { | |
| "Examples": "https://s3-ap-northeast-1.amazonaws.com/cloudformation-examples-ap-northeast-1" | |
| }, | |
| "ap-northeast-2": { | |
| "Examples": "https://s3-ap-northeast-2.amazonaws.com/cloudformation-examples-ap-northeast-2" | |
| }, | |
| "ap-northeast-3": { | |
| "Examples": "https://s3-ap-northeast-3.amazonaws.com/cloudformation-examples-ap-northeast-3" | |
| }, | |
| "ap-southeast-2": { | |
| "Examples": "https://s3-ap-southeast-2.amazonaws.com/cloudformation-examples-ap-southeast-2" | |
| }, | |
| "ap-south-1": { | |
| "Examples": "https://s3-ap-south-1.amazonaws.com/cloudformation-examples-ap-south-1" | |
| }, | |
| "us-east-2": { | |
| "Examples": "https://s3-us-east-2.amazonaws.com/cloudformation-examples-us-east-2" | |
| }, | |
| "ca-central-1": { | |
| "Examples": "https://s3-ca-central-1.amazonaws.com/cloudformation-examples-ca-central-1" | |
| }, | |
| "sa-east-1": { | |
| "Examples": "https://s3-sa-east-1.amazonaws.com/cloudformation-examples-sa-east-1" | |
| }, | |
| "cn-north-1": { | |
| "Examples": "https://s3.cn-north-1.amazonaws.com.cn/cloudformation-examples-cn-north-1" | |
| }, | |
| "cn-northwest-1": { | |
| "Examples": "https://s3.cn-northwest-1.amazonaws.com.cn/cloudformation-examples-cn-northwest-1" | |
| } | |
| }, | |
| "AWSInstanceType2Arch": { | |
| "t1.micro": { | |
| "Arch": "PV64" | |
| }, | |
| "t2.nano": { | |
| "Arch": "HVM64" | |
| }, | |
| "t2.micro": { | |
| "Arch": "HVM64" | |
| }, | |
| "t2.small": { | |
| "Arch": "HVM64" | |
| }, | |
| "t2.medium": { | |
| "Arch": "HVM64" | |
| }, | |
| "t2.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "m1.small": { | |
| "Arch": "PV64" | |
| }, | |
| "m1.medium": { | |
| "Arch": "PV64" | |
| }, | |
| "m1.large": { | |
| "Arch": "PV64" | |
| }, | |
| "m1.xlarge": { | |
| "Arch": "PV64" | |
| }, | |
| "m2.xlarge": { | |
| "Arch": "PV64" | |
| }, | |
| "m2.2xlarge": { | |
| "Arch": "PV64" | |
| }, | |
| "m2.4xlarge": { | |
| "Arch": "PV64" | |
| }, | |
| "m3.medium": { | |
| "Arch": "HVM64" | |
| }, | |
| "m3.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "m3.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "m3.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "m4.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "m4.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "m4.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "m4.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "m4.10xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c1.medium": { | |
| "Arch": "PV64" | |
| }, | |
| "c1.xlarge": { | |
| "Arch": "PV64" | |
| }, | |
| "c3.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "c3.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c3.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c3.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c3.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c4.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "c4.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c4.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c4.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "c4.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "g2.2xlarge": { | |
| "Arch": "HVMG2" | |
| }, | |
| "g2.8xlarge": { | |
| "Arch": "HVMG2" | |
| }, | |
| "r3.large": { | |
| "Arch": "HVM64" | |
| }, | |
| "r3.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "r3.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "r3.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "r3.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "i2.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "i2.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "i2.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "i2.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "d2.xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "d2.2xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "d2.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "d2.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "hi1.4xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "hs1.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "cr1.8xlarge": { | |
| "Arch": "HVM64" | |
| }, | |
| "cc2.8xlarge": { | |
| "Arch": "HVM64" | |
| } | |
| }, | |
| "AWSInstanceType2NATArch": { | |
| "t1.micro": { | |
| "Arch": "NATPV64" | |
| }, | |
| "t2.nano": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "t2.micro": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "t2.small": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "t2.medium": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "t2.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m1.small": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m1.medium": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m1.large": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m1.xlarge": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m2.xlarge": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m2.2xlarge": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m2.4xlarge": { | |
| "Arch": "NATPV64" | |
| }, | |
| "m3.medium": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m3.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m3.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m3.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m4.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m4.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m4.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m4.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "m4.10xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c1.medium": { | |
| "Arch": "NATPV64" | |
| }, | |
| "c1.xlarge": { | |
| "Arch": "NATPV64" | |
| }, | |
| "c3.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c3.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c3.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c3.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c3.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c4.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c4.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c4.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c4.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "c4.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "g2.2xlarge": { | |
| "Arch": "NATHVMG2" | |
| }, | |
| "g2.8xlarge": { | |
| "Arch": "NATHVMG2" | |
| }, | |
| "r3.large": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "r3.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "r3.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "r3.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "r3.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "i2.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "i2.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "i2.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "i2.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "d2.xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "d2.2xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "d2.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "d2.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "hi1.4xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "hs1.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "cr1.8xlarge": { | |
| "Arch": "NATHVM64" | |
| }, | |
| "cc2.8xlarge": { | |
| "Arch": "NATHVM64" | |
| } | |
| }, | |
| "AWSRegionArch2AMI": { | |
| "us-east-1": { | |
| "PV64": "ami-2a69aa47", | |
| "HVM64": "ami-759bc50a", | |
| "HVMG2": "ami-0a6e3770" | |
| }, | |
| "us-west-2": { | |
| "PV64": "ami-7f77b31f", | |
| "HVM64": "ami-f2d3638a", | |
| "HVMG2": "ami-ee15a196" | |
| }, | |
| "us-west-1": { | |
| "PV64": "ami-a2490dc2", | |
| "HVM64": "ami-824c4ee2", | |
| "HVMG2": "ami-0da4a46d" | |
| }, | |
| "eu-west-1": { | |
| "PV64": "ami-4cdd453f", | |
| "HVM64": "ami-d834aba1", | |
| "HVMG2": "ami-af8013d6" | |
| }, | |
| "eu-west-2": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-403e2524", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "eu-west-3": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-8ee056f3", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "eu-central-1": { | |
| "PV64": "ami-6527cf0a", | |
| "HVM64": "ami-5652ce39", | |
| "HVMG2": "ami-1d58ca72" | |
| }, | |
| "ap-northeast-1": { | |
| "PV64": "ami-3e42b65f", | |
| "HVM64": "ami-ceafcba8", | |
| "HVMG2": "ami-edfd658b" | |
| }, | |
| "ap-northeast-2": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-863090e8", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "ap-northeast-3": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-83444afe", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "ap-southeast-1": { | |
| "PV64": "ami-df9e4cbc", | |
| "HVM64": "ami-68097514", | |
| "HVMG2": "ami-c06013bc" | |
| }, | |
| "ap-southeast-2": { | |
| "PV64": "ami-63351d00", | |
| "HVM64": "ami-942dd1f6", | |
| "HVMG2": "ami-85ef12e7" | |
| }, | |
| "ap-south-1": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-531a4c3c", | |
| "HVMG2": "ami-411e492e" | |
| }, | |
| "us-east-2": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-f63b1193", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "ca-central-1": { | |
| "PV64": "NOT_SUPPORTED", | |
| "HVM64": "ami-a954d1cd", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "sa-east-1": { | |
| "PV64": "ami-1ad34676", | |
| "HVM64": "ami-84175ae8", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "cn-north-1": { | |
| "PV64": "ami-77559f1a", | |
| "HVM64": "ami-cb19c4a6", | |
| "HVMG2": "NOT_SUPPORTED" | |
| }, | |
| "cn-northwest-1": { | |
| "PV64": "ami-80707be2", | |
| "HVM64": "ami-3e60745c", | |
| "HVMG2": "NOT_SUPPORTED" | |
| } | |
| } | |
| }, | |
| "Resources": { | |
| "EC2Instance": { | |
| "Type": "AWS::EC2::Instance", | |
| "Properties": { | |
| "InstanceType": { | |
| "Ref": "InstanceType" | |
| }, | |
| "SecurityGroupIds": [ | |
| { | |
| "Fn::GetAtt" : [ "InstanceSecurityGroup", "GroupId" ] | |
| } | |
| ], | |
| "SubnetId" :{ | |
| "Ref": "SubnetID" | |
| }, | |
| "KeyName": { | |
| "Ref": "KeyName" | |
| }, | |
| "BlockDeviceMappings": [ | |
| { | |
| "DeviceName": "/dev/sda1", | |
| "Ebs": { | |
| "DeleteOnTermination": "true", | |
| "VolumeSize": { | |
| "Ref": "Ec2RootVolumeSize" | |
| } | |
| } | |
| } | |
| ], | |
| "ImageId": { | |
| "Fn::FindInMap": [ | |
| "AWSRegionArch2AMI", | |
| { | |
| "Ref": "AWS::Region" | |
| }, | |
| { | |
| "Fn::FindInMap": [ | |
| "AWSInstanceType2Arch", | |
| { | |
| "Ref": "InstanceType" | |
| }, | |
| "Arch" | |
| ] | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| "InstanceSecurityGroup": { | |
| "Type": "AWS::EC2::SecurityGroup", | |
| "Properties": { | |
| "GroupDescription": "Enable SSH access via port 22", | |
| "SecurityGroupIngress": [ | |
| { | |
| "IpProtocol": "tcp", | |
| "FromPort": "22", | |
| "ToPort": "22", | |
| "CidrIp": { | |
| "Ref": "SSHLocation" | |
| } | |
| } | |
| ], | |
| "VpcId" : { | |
| "Ref": "VpcId" | |
| }, | |
| } | |
| }, | |
| "EIPAddress": { | |
| "Type": "AWS::EC2::EIP", | |
| "DependsOn": "EC2Instance", | |
| "Properties": { | |
| "Domain": "vpc", | |
| "InstanceId": { | |
| "Ref": "EC2Instance" | |
| } | |
| } | |
| } | |
| }, | |
| "Outputs": { | |
| "InstanceId": { | |
| "Description": "InstanceId of the newly created EC2 instance", | |
| "Value": { | |
| "Ref": "EC2Instance" | |
| } | |
| }, | |
| "AZ": { | |
| "Description": "Availability Zone of the newly created EC2 instance", | |
| "Value": { | |
| "Fn::GetAtt": [ | |
| "EC2Instance", | |
| "AvailabilityZone" | |
| ] | |
| } | |
| }, | |
| "PublicDNS": { | |
| "Description": "Public DNSName of the newly created EC2 instance", | |
| "Value": { | |
| "Fn::GetAtt": [ | |
| "EC2Instance", | |
| "PublicDnsName" | |
| ] | |
| } | |
| }, | |
| "IPAttached": { | |
| "Description": "IP attached to EC2 instance", | |
| "Value": { | |
| "Fn::GetAtt": [ | |
| "EC2Instance", | |
| "PublicIp" | |
| ] | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment