Created
May 7, 2015 18:34
-
-
Save nedward/07c04c0a6459bd570e28 to your computer and use it in GitHub Desktop.
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", | |
"Parameters": { | |
"KeyName": { | |
"Description": "Name of an existing ec2 KeyPair to enable SSH access", | |
"Type": "AWS::EC2::KeyPair::KeyName", | |
"ConstraintDescription": "must be the name of an existing EC2 KeyPair." | |
}, | |
"InstanceType": { | |
"Description": "WebServer EC2 instance type", | |
"Type": "String", | |
"Default": "m3.large", | |
"AllowedValues": [ | |
"t1.micro", | |
"t2.micro", | |
"t2.small", | |
"t2.medium", | |
"m1.small", | |
"m1.medium", | |
"m1.large", | |
"m1.xlarge", | |
"m2.xlarge", | |
"m2.2xlarge", | |
"m2.4xlarge", | |
"m3.medium", | |
"m3.large", | |
"m3.xlarge", | |
"m3.2xlarge", | |
"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", | |
"r3.large", | |
"r3.xlarge", | |
"r3.2xlarge", | |
"r3.4xlarge", | |
"r3.8xlarge", | |
"i2.xlarge", | |
"i2.2xlarge", | |
"i2.4xlarge", | |
"i2.8xlarge", | |
"hi1.4xlarge", | |
"hs1.8xlarge", | |
"cr1.8xlarge", | |
"cc2.8xlarge", | |
"cg1.4xlarge" | |
], | |
"ConstraintDescription": "must be a valid EC2 instance type." | |
}, | |
"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." | |
} | |
}, | |
"Mappings": { | |
"AWSInstanceType2Arch": { | |
"t1.micro": { | |
"Arch": "PV64" | |
}, | |
"t2.micro": { | |
"Arch": "HVM64" | |
}, | |
"t2.small": { | |
"Arch": "HVM64" | |
}, | |
"t2.medium": { | |
"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" | |
}, | |
"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": "HVM64" | |
}, | |
"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" | |
}, | |
"hi1.4xlarge": { | |
"Arch": "HVM64" | |
}, | |
"hs1.8xlarge": { | |
"Arch": "HVM64" | |
}, | |
"cr1.8xlarge": { | |
"Arch": "HVM64" | |
}, | |
"cc2.8xlarge": { | |
"Arch": "HVM64" | |
} | |
}, | |
"AWSRegionArch2ChefServAMI": { | |
"us-east-1": { | |
"PV64": "ami-84562dec", | |
"HVM64": "ami-9a562df2" | |
}, | |
"us-west-2": { | |
"PV64": "ami-23ebb513", | |
"HVM64": "ami-29ebb519" | |
}, | |
"us-west-1": { | |
"PV64": "ami-c9b3538d", | |
"HVM64": "ami-93f010d7" | |
} | |
}, | |
"AWSRegionArch2AnAMI": { | |
"us-east-1": { | |
"PV64": "ami-84562dec", | |
"HVM64": "ami-9a562df2" | |
}, | |
"us-west-2": { | |
"PV64": "ami-23ebb513", | |
"HVM64": "ami-29ebb519" | |
}, | |
"us-west-1": { | |
"PV64": "ami-1bb3535f", | |
"HVM64": "ami-85ef0fc1" | |
} | |
} | |
}, | |
"Resources": { | |
"VPC": { | |
"Type": "AWS::EC2::VPC", | |
"Properties": { | |
"CidrBlock": "10.0.0.0/16", | |
"Tags": [ | |
{ | |
"Key": "Application", | |
"Value": { | |
"Ref": "AWS::StackId" | |
} | |
} | |
] | |
} | |
}, | |
"Subnet": { | |
"Type": "AWS::EC2::Subnet", | |
"Properties": { | |
"VpcId": { | |
"Ref": "VPC" | |
}, | |
"CidrBlock": "10.0.0.0/24", | |
"Tags": [ | |
{ | |
"Key": "Application", | |
"Value": { | |
"Ref": "AWS::StackId" | |
} | |
} | |
] | |
} | |
}, | |
"InternetGateway": { | |
"Type": "AWS::EC2::InternetGateway", | |
"Properties": { | |
"Tags": [ | |
{ | |
"Key": "Application", | |
"Value": { | |
"Ref": "AWS::StackId" | |
} | |
} | |
] | |
} | |
}, | |
"AttachGateway": { | |
"Type": "AWS::EC2::VPCGatewayAttachment", | |
"Properties": { | |
"VpcId": { | |
"Ref": "VPC" | |
}, | |
"InternetGatewayId": { | |
"Ref": "InternetGateway" | |
} | |
} | |
}, | |
"RouteTable": { | |
"Type": "AWS::EC2::RouteTable", | |
"Properties": { | |
"VpcId": { | |
"Ref": "VPC" | |
}, | |
"Tags": [ | |
{ | |
"Key": "Application", | |
"Value": { | |
"Ref": "AWS::StackId" | |
} | |
} | |
] | |
} | |
}, | |
"Route": { | |
"Type": "AWS::EC2::Route", | |
"DependsOn": "AttachGateway", | |
"Properties": { | |
"RouteTableId": { | |
"Ref": "RouteTable" | |
}, | |
"DestinationCidrBlock": "0.0.0.0/0", | |
"GatewayId": { | |
"Ref": "InternetGateway" | |
} | |
} | |
}, | |
"SubnetRouteTableAssociation": { | |
"Type": "AWS::EC2::SubnetRouteTableAssociation", | |
"Properties": { | |
"SubnetId": { | |
"Ref": "Subnet" | |
}, | |
"RouteTableId": { | |
"Ref": "RouteTable" | |
} | |
} | |
}, | |
"NetworkAcl": { | |
"Type": "AWS::EC2::NetworkAcl", | |
"Properties": { | |
"VpcId": { | |
"Ref": "VPC" | |
}, | |
"Tags": [ | |
{ | |
"Key": "Application", | |
"Value": { | |
"Ref": "AWS::StackId" | |
} | |
} | |
] | |
} | |
}, | |
"InboundHTTPNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "100", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "false", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "80", | |
"To": "80" | |
} | |
} | |
}, | |
"InboundSSHNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "101", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "false", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "22", | |
"To": "22" | |
} | |
} | |
}, | |
"InboundResponsePortsNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "102", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "false", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "1024", | |
"To": "65535" | |
} | |
} | |
}, | |
"InboundHTTPSPortsNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "103", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "false", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "443", | |
"To": "443" | |
} | |
} | |
}, | |
"OutBoundHTTPNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "100", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "true", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "80", | |
"To": "80" | |
} | |
} | |
}, | |
"OutBoundHTTPSNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "101", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "true", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "443", | |
"To": "443" | |
} | |
} | |
}, | |
"OutBoundResponsePortsNetworkAclEntry": { | |
"Type": "AWS::EC2::NetworkAclEntry", | |
"Properties": { | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
}, | |
"RuleNumber": "102", | |
"Protocol": "6", | |
"RuleAction": "allow", | |
"Egress": "true", | |
"CidrBlock": "0.0.0.0/0", | |
"PortRange": { | |
"From": "1024", | |
"To": "65535" | |
} | |
} | |
}, | |
"SubnetNetworkAclAssociation": { | |
"Type": "AWS::EC2::SubnetNetworkAclAssociation", | |
"Properties": { | |
"SubnetId": { | |
"Ref": "Subnet" | |
}, | |
"NetworkAclId": { | |
"Ref": "NetworkAcl" | |
} | |
} | |
}, | |
"IPAddress": { | |
"Type": "AWS::EC2::EIP", | |
"DependsOn": "AttachGateway", | |
"Properties": { | |
"Domain": "vpc", | |
"InstanceId": { | |
"Ref": "ChefServer" | |
} | |
} | |
}, | |
"ChefServer": { | |
"Type": "AWS::EC2::Instance", | |
"Properties": { | |
"InstanceType": { | |
"Ref": "InstanceType" | |
}, | |
"NetworkInterfaces": [ | |
{ | |
"GroupSet": [ | |
{ | |
"Ref": "ChefSecurityGroup" | |
} | |
], | |
"AssociatePublicIpAddress": "true", | |
"PrivateIpAddress": "10.0.0.10", | |
"DeviceIndex": "0", | |
"DeleteOnTermination": "true", | |
"SubnetId": { | |
"Ref": "Subnet" | |
} | |
} | |
], | |
"KeyName": { | |
"Ref": "KeyName" | |
}, | |
"ImageId": { | |
"Fn::FindInMap": [ | |
"AWSRegionArch2ChefServAMI", | |
{ | |
"Ref": "AWS::Region" | |
}, | |
{ | |
"Fn::FindInMap": [ | |
"AWSInstanceType2Arch", | |
{ | |
"Ref": "InstanceType" | |
}, | |
"Arch" | |
] | |
} | |
] | |
} | |
} | |
}, | |
"Analytics": { | |
"Type": "AWS::EC2::Instance", | |
"Properties": { | |
"InstanceType": { | |
"Ref": "InstanceType" | |
}, | |
"NetworkInterfaces": [ | |
{ | |
"GroupSet": [ | |
{ | |
"Ref": "ChefSecurityGroup" | |
} | |
], | |
"AssociatePublicIpAddress": "true", | |
"PrivateIpAddress": "10.0.0.20", | |
"DeviceIndex": "0", | |
"DeleteOnTermination": "true", | |
"SubnetId": { | |
"Ref": "Subnet" | |
} | |
} | |
], | |
"KeyName": { | |
"Ref": "KeyName" | |
}, | |
"ImageId": { | |
"Fn::FindInMap": [ | |
"AWSRegionArch2AnAMI", | |
{ | |
"Ref": "AWS::Region" | |
}, | |
{ | |
"Fn::FindInMap": [ | |
"AWSInstanceType2Arch", | |
{ | |
"Ref": "InstanceType" | |
}, | |
"Arch" | |
] | |
} | |
] | |
} | |
} | |
}, | |
"ChefSecurityGroup": { | |
"Type": "AWS::EC2::SecurityGroup", | |
"Properties": { | |
"VpcId": { | |
"Ref": "VPC" | |
}, | |
"GroupDescription": "Enable required ports for Chef Server", | |
"SecurityGroupIngress": [ | |
{ | |
"IpProtocol": "tcp", | |
"FromPort": "22", | |
"ToPort": "22", | |
"CidrIp": { | |
"Ref": "SSHLocation" | |
} | |
}, | |
{ | |
"IpProtocol": "tcp", | |
"FromPort": "22", | |
"ToPort": "22", | |
"CidrIp": "10.0.0.0/8" | |
}, | |
{ | |
"IpProtocol": "tcp", | |
"FromPort": "443", | |
"ToPort": "443", | |
"CidrIp": "0.0.0.0/0" | |
}, | |
{ | |
"IpProtocol": "tcp", | |
"FromPort": "80", | |
"ToPort": "80", | |
"CidrIp": "0.0.0.0/0" | |
}, | |
{ | |
"IpProtocol": "tcp", | |
"FromPort": "5672", | |
"ToPort": "5672", | |
"CidrIp": "10.0.0.0/8" | |
} | |
] | |
} | |
} | |
}, | |
"Outputs": { | |
"ChefServerPubDNS": { | |
"Description": "Public IP address of the newly created Chef Server", | |
"Value": { | |
"Fn::GetAtt": [ | |
"ChefServer", | |
"PublicIp" | |
] | |
} | |
}, | |
"AnalyticsPubDNS": { | |
"Description": "Public IP address of the newly created Analytics Serv", | |
"Value": { | |
"Fn::GetAtt": [ | |
"Analytics", | |
"PublicIp" | |
] | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment