Provide example F18 NoKey example

F18 requires some firewalld magic to enable http

Change-Id: I3e8ac256ee09af68d772b23690ed1ed368e04938
This commit is contained in:
Steven Dake 2013-07-24 17:29:35 -07:00
parent 3f87dfd37a
commit 22d532c76c

View File

@ -0,0 +1,158 @@
HeatTemplateFormatVersion: '2012-12-12'
Description: 'Heat WordPress template to support F18 with no SSH key requirements:
WordPress is web software you can use to create a beautiful website or blog. This
template installs a single-instance WordPress deployment using a local MySQL database
to store the data.'
Parameters:
InstanceType:
Description: WebServer EC2 instance type
Type: String
Default: m1.small
AllowedValues: [m1.tiny, m1.small, m1.medium, m1.large, m1.xlarge]
ConstraintDescription: must be a valid EC2 instance type.
DBName: {Default: wordpress, Description: The
WordPress database name, Type: String, MinLength: '1',
MaxLength: '64', AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*',
ConstraintDescription: must begin with a letter and contain only
alphanumeric characters.}
DBUsername: {Default: admin, NoEcho: 'true',
Description: The WordPress database admin account username, Type: String,
MinLength: '1', MaxLength: '16', AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*',
ConstraintDescription: must begin with a letter and contain only
alphanumeric characters.}
DBPassword: {Default: admin, NoEcho: 'true',
Description: The WordPress database admin account password, Type: String,
MinLength: '1', MaxLength: '41', AllowedPattern: '[a-zA-Z0-9]*',
ConstraintDescription: must contain only alphanumeric characters.}
DBRootPassword: {Default: admin, NoEcho: 'true',
Description: Root password for MySQL, Type: String,
MinLength: '1', MaxLength: '41', AllowedPattern: '[a-zA-Z0-9]*',
ConstraintDescription: must contain only alphanumeric characters.}
Mappings:
InstanceTypeToImage:
m1.tiny: {Image: 'F18-i386-cfntools'}
m1.small: {Image: 'F18-x86_64-cfntools'}
m1.medium: {Image: 'F18-x86_64-cfntools'}
m1.large: {Image: 'F18-x86_64-cfntools'}
m1.xlarge: {Image: 'F18-x86_64-cfntools'}
Resources:
WebServerSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: 'Enable HTTP access via port 80 plus SSH access'
SecurityGroupIngress:
- IpProtocol: icmp
FromPort: -1
ToPort: -1
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort : 22
CidrIp : 0.0.0.0/0
WikiDatabase:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
config:
packages:
yum:
mysql: []
mysql-server: []
httpd: []
wordpress: []
services:
systemd:
mysqld: {enabled: 'true', ensureRunning: 'true'}
httpd: {enabled: 'true', ensureRunning: 'true'}
Properties:
ImageId:
Fn::FindInMap:
- InstanceTypeToImage
- {Ref: InstanceType}
- Image
InstanceType: {Ref: InstanceType}
SecurityGroups: [{"Ref" : "WebServerSecurityGroup"}]
UserData:
Fn::Base64:
Fn::Join:
- ''
- - '#!/bin/bash -v
'
- '/opt/aws/bin/cfn-init
'
- 'firewall-cmd --add-service=http
'
- '# Setup MySQL root password and create a user
'
- mysqladmin -u root password '
- {Ref: DBRootPassword}
- '''
'
- cat << EOF | mysql -u root --password='
- {Ref: DBRootPassword}
- '''
'
- 'CREATE DATABASE '
- {Ref: DBName}
- ';
'
- 'GRANT ALL PRIVILEGES ON '
- {Ref: DBName}
- .* TO "
- {Ref: DBUsername}
- '"@"localhost"
'
- IDENTIFIED BY "
- {Ref: DBPassword}
- '";
'
- 'FLUSH PRIVILEGES;
'
- 'EXIT
'
- 'EOF
'
- 'sed -i "/Deny from All/d" /etc/httpd/conf.d/wordpress.conf
'
- 'sed -i "s/Require local/Require all granted/" /etc/httpd/conf.d/wordpress.conf
'
- sed --in-place --e s/database_name_here/
- {Ref: DBName}
- / --e s/username_here/
- {Ref: DBUsername}
- / --e s/password_here/
- {Ref: DBPassword}
- '/ /etc/wordpress/wp-config.php
'
- 'systemctl restart httpd.service
'
Outputs:
WebsiteURL:
Value:
Fn::Join:
- ''
- - http://
- Fn::GetAtt: [WikiDatabase, PublicIp]
- /wordpress
Description: URL for Wordpress wiki