159 lines
5.0 KiB
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
|