Created
April 2, 2018 03:59
-
-
Save chrisjmendez/335660ef15eb14cf847116cfd8a063d9 to your computer and use it in GitHub Desktop.
How to create a VPC with DNS and Public IPs enabled.
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 Sample Template VPC_with_PublicIPs_And_DNS: Sample | |
template showing how to create a VPC with DNS and Public IPs enabled. You will be | |
billed for the AWS resources used if you create a stack from this template.' | |
Parameters: | |
KeyName: | |
Description: Name of an existing EC2 KeyPair to enable SSH access to the bastion | |
host | |
Type: AWS::EC2::KeyPair::KeyName | |
ConstraintDescription: must be the name of an existing EC2 KeyPair. | |
SSHLocation: | |
Description: Lockdown SSH access to the bastion host (default can be accessed | |
from anywhere) | |
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 CIDR range of the form x.x.x.x/x. | |
EC2InstanceType: | |
Description: 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. | |
Mappings: | |
SubnetConfig: | |
VPC: | |
CIDR: 10.0.0.0/16 | |
Public: | |
CIDR: 10.0.0.0/24 | |
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-97785bed | |
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: | |
VPC: | |
Type: AWS::EC2::VPC | |
Properties: | |
EnableDnsSupport: 'true' | |
EnableDnsHostnames: 'true' | |
CidrBlock: | |
Fn::FindInMap: | |
- SubnetConfig | |
- VPC | |
- CIDR | |
Tags: | |
- Key: Application | |
Value: | |
Ref: AWS::StackName | |
- Key: Network | |
Value: Public | |
PublicSubnet: | |
Type: AWS::EC2::Subnet | |
Properties: | |
VpcId: | |
Ref: VPC | |
CidrBlock: | |
Fn::FindInMap: | |
- SubnetConfig | |
- Public | |
- CIDR | |
Tags: | |
- Key: Application | |
Value: | |
Ref: AWS::StackName | |
- Key: Network | |
Value: Public | |
InternetGateway: | |
Type: AWS::EC2::InternetGateway | |
Properties: | |
Tags: | |
- Key: Application | |
Value: | |
Ref: AWS::StackName | |
- Key: Network | |
Value: Public | |
GatewayToInternet: | |
Type: AWS::EC2::VPCGatewayAttachment | |
Properties: | |
VpcId: | |
Ref: VPC | |
InternetGatewayId: | |
Ref: InternetGateway | |
PublicRouteTable: | |
Type: AWS::EC2::RouteTable | |
Properties: | |
VpcId: | |
Ref: VPC | |
Tags: | |
- Key: Application | |
Value: | |
Ref: AWS::StackName | |
- Key: Network | |
Value: Public | |
PublicRoute: | |
Type: AWS::EC2::Route | |
DependsOn: GatewayToInternet | |
Properties: | |
RouteTableId: | |
Ref: PublicRouteTable | |
DestinationCidrBlock: 0.0.0.0/0 | |
GatewayId: | |
Ref: InternetGateway | |
PublicSubnetRouteTableAssociation: | |
Type: AWS::EC2::SubnetRouteTableAssociation | |
Properties: | |
SubnetId: | |
Ref: PublicSubnet | |
RouteTableId: | |
Ref: PublicRouteTable | |
PublicNetworkAcl: | |
Type: AWS::EC2::NetworkAcl | |
Properties: | |
VpcId: | |
Ref: VPC | |
Tags: | |
- Key: Application | |
Value: | |
Ref: AWS::StackName | |
- Key: Network | |
Value: Public | |
InboundHTTPPublicNetworkAclEntry: | |
Type: AWS::EC2::NetworkAclEntry | |
Properties: | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
RuleNumber: '100' | |
Protocol: '6' | |
RuleAction: allow | |
Egress: 'false' | |
CidrBlock: 0.0.0.0/0 | |
PortRange: | |
From: '80' | |
To: '80' | |
InboundHTTPSPublicNetworkAclEntry: | |
Type: AWS::EC2::NetworkAclEntry | |
Properties: | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
RuleNumber: '101' | |
Protocol: '6' | |
RuleAction: allow | |
Egress: 'false' | |
CidrBlock: 0.0.0.0/0 | |
PortRange: | |
From: '443' | |
To: '443' | |
InboundSSHPublicNetworkAclEntry: | |
Type: AWS::EC2::NetworkAclEntry | |
Properties: | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
RuleNumber: '102' | |
Protocol: '6' | |
RuleAction: allow | |
Egress: 'false' | |
CidrBlock: | |
Ref: SSHLocation | |
PortRange: | |
From: '22' | |
To: '22' | |
InboundEphemeralPublicNetworkAclEntry: | |
Type: AWS::EC2::NetworkAclEntry | |
Properties: | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
RuleNumber: '103' | |
Protocol: '6' | |
RuleAction: allow | |
Egress: 'false' | |
CidrBlock: 0.0.0.0/0 | |
PortRange: | |
From: '1024' | |
To: '65535' | |
OutboundPublicNetworkAclEntry: | |
Type: AWS::EC2::NetworkAclEntry | |
Properties: | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
RuleNumber: '100' | |
Protocol: '6' | |
RuleAction: allow | |
Egress: 'true' | |
CidrBlock: 0.0.0.0/0 | |
PortRange: | |
From: '0' | |
To: '65535' | |
PublicSubnetNetworkAclAssociation: | |
Type: AWS::EC2::SubnetNetworkAclAssociation | |
Properties: | |
SubnetId: | |
Ref: PublicSubnet | |
NetworkAclId: | |
Ref: PublicNetworkAcl | |
EC2Host: | |
Type: AWS::EC2::Instance | |
DependsOn: GatewayToInternet | |
Properties: | |
InstanceType: | |
Ref: EC2InstanceType | |
KeyName: | |
Ref: KeyName | |
ImageId: | |
Fn::FindInMap: | |
- AWSRegionArch2AMI | |
- Ref: AWS::Region | |
- Fn::FindInMap: | |
- AWSInstanceType2Arch | |
- Ref: EC2InstanceType | |
- Arch | |
NetworkInterfaces: | |
- GroupSet: | |
- Ref: EC2SecurityGroup | |
AssociatePublicIpAddress: 'true' | |
DeviceIndex: '0' | |
DeleteOnTermination: 'true' | |
SubnetId: | |
Ref: PublicSubnet | |
EC2SecurityGroup: | |
Type: AWS::EC2::SecurityGroup | |
Properties: | |
GroupDescription: Enable access to the EC2 host | |
VpcId: | |
Ref: VPC | |
SecurityGroupIngress: | |
- IpProtocol: tcp | |
FromPort: '22' | |
ToPort: '22' | |
CidrIp: | |
Ref: SSHLocation | |
Outputs: | |
VPCId: | |
Description: VPCId of the newly created VPC | |
Value: | |
Ref: VPC | |
PublicSubnet: | |
Description: SubnetId of the public subnet | |
Value: | |
Ref: PublicSubnet | |
DNSName: | |
Description: DNS Name of the EC2 host | |
Value: | |
Fn::GetAtt: | |
- EC2Host | |
- PublicDnsName |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment