AWS CloudFormation WordPress示例超时

时间:2018-07-18 20:11:01

标签: wordpress amazon-web-services amazon-cloudformation aws-codepipeline

我正在研究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管理控制台创建的。还听到了一些有关权限的信息,但是我不确定该如何工作,尤其是因为未创建实例。

无论如何,有人对如何解决此错误有任何建议吗?为什么没有创建我的实例?

1 个答案:

答案 0 :(得分:0)

许多默认模板不起作用。例如,我尝试了Rails,遇到了同样的问题。似乎亚马逊很久以前就创建了这些模板,但由于某种原因未能及时更新,现在只有一堆破损的模板可以浪费人们的时间。

诊断此问题的唯一方法是指定您不希望堆栈在创建失败时回退,然后通过SSH并在失败后检查服务器上的日志。不幸的是,没有人会去做,因为尝试模板的全部目的是不必从头开始编写东西。如果亚马逊想提供默认模板,则应确保它们可以正常工作。您可能还只是创建一个Apache网络服务器,然后向Google创建在LAMP堆栈上构建Wordpress的说明。