1b2a2d7d7e
Change-Id: Ibc14297159e6e0c0b159d214539a5030d4af573e
131 lines
4.3 KiB
Plaintext
131 lines
4.3 KiB
Plaintext
{
|
|
"AWSTemplateFormatVersion": "2010-09-09",
|
|
|
|
"Description": "A load balancer instance running a local HAproxy",
|
|
|
|
"Parameters": {
|
|
|
|
"KeyName": {
|
|
"Description": "Name of an existing EC2 KeyPair to enable SSH access to the instances",
|
|
"Type": "String"
|
|
},
|
|
|
|
"Server1": {
|
|
"Description": "Server1 to load balance <ip:port>",
|
|
"Type": "String"
|
|
},
|
|
|
|
"InstanceType": {
|
|
"Description": "HAProxy server EC2 instance type",
|
|
"Default": "m1.small",
|
|
"Type": "String",
|
|
"AllowedValues": [ "t1.micro", "m1.small", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "c1.medium", "c1.xlarge", "cc1.4xlarge" ],
|
|
"ConstraintDescription": "must be a valid EC2 instance type."
|
|
},
|
|
|
|
"LinuxDistribution": {
|
|
"Default": "F17",
|
|
"Description" : "Distribution of choice",
|
|
"Type": "String",
|
|
"AllowedValues" : [ "F16", "F17", "U10", "RHEL-6.1", "RHEL-6.2", "RHEL-6.3" ]
|
|
}
|
|
},
|
|
|
|
"Mappings" : {
|
|
"AWSInstanceType2Arch" : {
|
|
"t1.micro" : { "Arch" : "32" },
|
|
"m1.small" : { "Arch" : "32" },
|
|
"m1.large" : { "Arch" : "64" },
|
|
"m1.xlarge" : { "Arch" : "64" },
|
|
"m2.xlarge" : { "Arch" : "64" },
|
|
"m2.2xlarge" : { "Arch" : "64" },
|
|
"m2.4xlarge" : { "Arch" : "64" },
|
|
"c1.medium" : { "Arch" : "32" },
|
|
"c1.xlarge" : { "Arch" : "64" },
|
|
"cc1.4xlarge" : { "Arch" : "64" }
|
|
},
|
|
"DistroArch2AMI": {
|
|
"F16" : { "32" : "F16-i386-cfntools", "64" : "F16-x86_64-cfntools" },
|
|
"F17" : { "32" : "F17-i386-cfntools", "64" : "F17-x86_64-cfntools" },
|
|
"U10" : { "32" : "U10-i386-cfntools", "64" : "U10-x86_64-cfntools" },
|
|
"RHEL-6.1" : { "32" : "rhel61-i386-cfntools", "64" : "rhel61-x86_64-cfntools" },
|
|
"RHEL-6.2" : { "32" : "rhel62-i386-cfntools", "64" : "rhel62-x86_64-cfntools" },
|
|
"RHEL-6.3" : { "32" : "rhel63-i386-cfntools", "64" : "rhel63-x86_64-cfntools" }
|
|
}
|
|
},
|
|
|
|
"Resources": {
|
|
"LoadBalancerInstance": {
|
|
"Type": "AWS::EC2::Instance",
|
|
"Metadata": {
|
|
"AWS::CloudFormation::Init": {
|
|
"config": {
|
|
"packages": {
|
|
"yum": {
|
|
"haproxy" : []
|
|
}
|
|
},
|
|
"services": {
|
|
"systemd": {
|
|
"haproxy" : { "enabled": "true", "ensureRunning": "true" }
|
|
}
|
|
},
|
|
"files": {
|
|
"/etc/haproxy/haproxy.cfg": {
|
|
"content": { "Fn::Join": ["", [
|
|
" global\n",
|
|
" daemon\n",
|
|
" maxconn 256\n",
|
|
"\n",
|
|
" defaults\n",
|
|
" mode http\n",
|
|
" timeout connect 5000ms\n",
|
|
" timeout client 50000ms\n",
|
|
" timeout server 50000ms\n",
|
|
"\n",
|
|
" frontend http-in\n",
|
|
" bind *:80\n",
|
|
" default_backend servers\n",
|
|
"\n",
|
|
" backend servers\n",
|
|
" balance roundrobin\n",
|
|
" option http-server-close\n",
|
|
" option forwardfor\n",
|
|
" server server1 ", { "Ref" : "Server1" }, "\n"
|
|
]]},
|
|
"mode": "000644",
|
|
"owner": "root",
|
|
"group": "root"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Properties": {
|
|
"ImageId" : {
|
|
"Fn::FindInMap" : [ "DistroArch2AMI",
|
|
{ "Ref" : "LinuxDistribution" },
|
|
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch",
|
|
{ "Ref" : "InstanceType" },
|
|
"Arch" ] } ]
|
|
},
|
|
"InstanceType": { "Ref": "InstanceType" },
|
|
"KeyName": { "Ref": "KeyName" },
|
|
"UserData": { "Fn::Base64": { "Fn::Join": ["", [
|
|
"#!/bin/bash -v\n",
|
|
"/opt/aws/bin/cfn-init -s ",
|
|
{ "Ref": "AWS::StackName" },
|
|
" --region ", { "Ref": "AWS::Region" }, "\n"
|
|
]]}}
|
|
}
|
|
}
|
|
},
|
|
|
|
"Outputs": {
|
|
"PublicIp": {
|
|
"Value": { "Fn::GetAtt": [ "LoadBalancerInstance", "PublicIp" ] },
|
|
"Description": "instance IP"
|
|
}
|
|
}
|
|
}
|