heat-templates/cfn/F17/WordPress_Single_Instance.yaml

159 lines
5.0 KiB
YAML

HeatTemplateFormatVersion: '2012-12-12'
Description: >-
Heat Sample Template WordPress_Single_Instance:
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:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
Type: String
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:
Description: The WordPress database name
Type: String
Default: wordpress
MinLength: '1'
MaxLength: '64'
AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'
ConstraintDescription: must begin with a letter and contain only alphanumeric characters.
DBUsername:
Description: The WordPress database admin account username
Type: String
Default: admin
NoEcho: 'true'
MinLength: '1'
MaxLength: '16'
AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'
ConstraintDescription: must begin with a letter and contain only alphanumeric characters.
DBPassword:
Description: The WordPress database admin account password
Type: String
Default: admin
NoEcho: 'true'
MinLength: '1'
MaxLength: '41'
AllowedPattern: '[a-zA-Z0-9]*'
ConstraintDescription: must contain only alphanumeric characters.
DBRootPassword:
Description: Root password for MySQL
Type: String
Default: admin
NoEcho: 'true'
MinLength: '1'
MaxLength: '41'
AllowedPattern: '[a-zA-Z0-9]*'
ConstraintDescription: must contain only alphanumeric characters.
LinuxDistribution:
Default: F17
Description: Distribution of choice
Type: String
AllowedValues: [F18, F17, U10, RHEL-6.1, RHEL-6.2, RHEL-6.3]
Mappings:
AWSInstanceType2Arch:
m1.tiny: {Arch: '32'}
m1.small: {Arch: '64'}
m1.medium: {Arch: '64'}
m1.large: {Arch: '64'}
m1.xlarge: {Arch: '64'}
DistroArch2AMI:
F18: {'32': F18-i386-cfntools, '64': F18-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:
WebServer:
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:
- DistroArch2AMI
- {Ref: LinuxDistribution}
- Fn::FindInMap:
- AWSInstanceType2Arch
- {Ref: InstanceType}
- Arch
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
UserData:
Fn::Base64:
Fn::Join:
- "\n"
- - "#!/bin/bash -v"
- ""
- /opt/aws/bin/cfn-init
- ""
- "# Setup MySQL root password and create a user"
- Fn::Join:
- ""
- - "mysqladmin -u root password '"
- {Ref: DBRootPassword}
- "'"
- Fn::Join:
- ""
- - "cat << EOF | mysql -u root --password='"
- {Ref: DBRootPassword}
- "'"
- Fn::Join:
- ""
- - 'CREATE DATABASE '
- {Ref: DBName}
- ;
- Fn::Join:
- ""
- - '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
- Fn::Join:
- ""
- - 'sed -i '
- -e s/database_name_here/
- {Ref: DBName}
- / -e s/username_here/
- {Ref: DBUsername}
- / -e s/password_here/
- {Ref: DBPassword}
- / /usr/share/wordpress/wp-config.php
- ""
- systemctl restart httpd.service
Outputs:
WebsiteURL:
Value:
Fn::Join:
- ''
- - http://
- Fn::GetAtt: [WebServer, PublicIp]
- /wordpress
Description: URL for Wordpress service