我正在研究AWS为creating a pipeline for a WordPress site using CloudFormation提供的演练。我第一次使用它时会经历它,但是后来我想对该项目进行一些更改,并尝试一些新的东西。在这种情况下,我想将源代码更改为GitHub存储库,其中包含要创建的网站的其他内容。我唯一更改的行是在资源WebServer块中。现在看起来像这样:
Resources:
WebServer:
Type: AWS::EC2::Instance
CreationPolicy:
ResourceSignal:
Timeout: PT15M
Metadata:
AWS::CloudFormation::Init:
configSets:
wordpress_install:
- install_cfn
- install_wordpress
- configure_wordpress
configure_wordpress:
commands:
01_set_mysql_root_password:
command: !Sub |
mysqladmin -u root password '${DBRootPassword}'
test: !Sub |
$(mysql ${DBName} -u root --password='${DBRootPassword}' >/dev/null 2>&1 </dev/null); (( $? != 0 ))
02_create_database:
command: !Sub |
mysql -u root --password='${DBRootPassword}' < /tmp/setup.mysql
test: !Sub |
$(mysql ${DBName} -u root --password='${DBRootPassword}' >/dev/null 2>&1 </dev/null); (( $? !=0))
03_configure_wordpress:
command: /tmp/create-wp-config
cwd: /var/www/html/wordpress
install_cfn:
files:
/etc/cfn/cfn-hup.conf:
content: !Sub |
[main]
stack= ${AWS::StackId}
region=${AWS::Region}
group: root
mode: '000400'
owner: root
/etc/cfn/hooks.d/cfn-auto-reloader.conf:
content: !Sub |
[cfn-auto-reloader-hook]
triggers=post.update
path=Resources.WebServer.Metadata.AWS::CloudFormation::Init
action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServer --configsets wordpress_install --url https://stackbuilder.amazonaws.com
group: root
mode: '000400'
owner: root
services:
sysvinit:
cfn-hup:
enabled: true
ensureRunning: true
files:
- /etc/cfn/cfn-hup.conf
- /etc/cfn/hooks.d/cfn-auto-reloader.conf
install_wordpress:
files:
/tmp/create-wp-config:
content: !Sub |
#!/bin/bash -xe
#cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
#git clone --depth 1 https://github.com/Pinto18/base-wordpress-install.git /var/html/wordpress
sed -i "s/'$connectstr_dbname'/'${DBName}'/g" wp-config.php
sed -i "s/'$connectstr_dbusername'/'${DBUser}'/g" wp-config.php
sed -i "s/'$connectstr_dbpassword'/'${DBPassword}'/g" wp-config.php
group: root
mode: '000500'
owner: root
/tmp/setup.mysql:
content: !Sub |
CREATE DATABASE ${DBName};
CREATE USER '${DBUser}'@'localhost' IDENTIFIED BY '${DBPassword}';
GRANT ALL ON ${DBName}.* TO '${DBUser}'@'localhost';
FLUSH PRIVILEGES;
group: root
mode: '000400'
owner: root
packages:
yum:
git: []
httpd: []
mysql: []
mysql-devel: []
mysql-libs: []
mysql-server: []
php: []
php-mysql: []
services:
sysvinit:
httpd:
enabled: true
ensureRunning: true
mysqld:
enabled: true
ensureRunning: true
sources:
/var/www/html: "https://github.com/Pinto18/base-wordpress-install/tarball/master"
我的问题是,在堆栈详细信息中,我不断收到超时错误,提示“在指定的持续时间内未能接收到1个资源信号”。
我不确定该如何进入系统日志。该实例似乎不是根据EC2管理控制台创建的。还听到了一些有关权限的信息,但是我不确定该如何工作,尤其是因为未创建实例。
无论如何,有人对如何解决此错误有任何建议吗?为什么没有创建我的实例?
答案 0 :(得分:0)
许多默认模板不起作用。例如,我尝试了Rails,遇到了同样的问题。似乎亚马逊很久以前就创建了这些模板,但由于某种原因未能及时更新,现在只有一堆破损的模板可以浪费人们的时间。
诊断此问题的唯一方法是指定您不希望堆栈在创建失败时回退,然后通过SSH并在失败后检查服务器上的日志。不幸的是,没有人会去做,因为尝试模板的全部目的是不必从头开始编写东西。如果亚马逊想提供默认模板,则应确保它们可以正常工作。您可能还只是创建一个Apache网络服务器,然后向Google创建在LAMP堆栈上构建Wordpress的说明。