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 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