Make YAML template easier to read

- Use folded block for Description
- Clarify description text
- Don't use JSON-style notation for Parameters
- Join UserData script with newlines to make it more readable
- Rename nonsensical 'WikiDatabase' instance to WebServer

Change-Id: Ieb7925e3fdb0e7f65fd6f69b9e9bbcd0235587da
This commit is contained in:
Zane Bitter 2013-07-24 16:01:51 +02:00
parent 3f87dfd37a
commit e66db0d046
1 changed files with 95 additions and 91 deletions

View File

@ -1,35 +1,54 @@
HeatTemplateFormatVersion: '2012-12-12'
Description: 'AWS CloudFormation 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.'
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}
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: {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.}
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
@ -50,7 +69,7 @@ Mappings:
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:
WikiDatabase:
WebServer:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
@ -79,77 +98,62 @@ Resources:
UserData:
Fn::Base64:
Fn::Join:
- ''
- - '#!/bin/bash -v
'
- '/opt/aws/bin/cfn-init
'
- '# 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}
- '/ /usr/share/wordpress/wp-config.php
'
- 'systemctl restart httpd.service
'
- "\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: [WikiDatabase, PublicIp]
- Fn::GetAtt: [WebServer, PublicIp]
- /wordpress
Description: URL for Wordpress wiki
Description: URL for Wordpress service