高级AWS CloudFormation - cfn-Init& cfn-Hup无法正常工作

时间:2017-12-30 12:11:57

标签: wordpress amazon-web-services error-handling amazon-cloudformation

我正在尝试使用Cloudformation CFN-INIT& CFN-HUP基于以下模板,但wordpress堆栈没有创建。 CFN-HUP进程未启动,CFN-Init抛出Code1错误。请参阅下面的堆栈模板和错误日志详细信息。任何人都可以帮我理解这里出了什么问题吗?

栈模板:

**Parameters:
  DecideEnvSize:
    Type: String
    Default: LOW
    AllowedValues:
      - LOW
      - MEDIUM
      - HIGH
    Description: Select Environment Size (S,M,L)
  DatabaseName:
    Type: String
    Default: DB4wordpress
  DatabaseUser:
    Type: String
    Default: ***************
  DatabasePassword:
    Type: String
    Default: *************
    NoEcho: true  
  TestString:
    Type: String
    Default: Don't eat yourself up!!!
Mappings:
  MyRegionMap:
    us-east-1:
      "AMALINUX" : "ami-c481fad3" # AMALINUX SEP 2016 - N. Verginia
    us-east-2:
      "AMALINUX" : "ami-71ca9114" # AMALINUX SEP 2016 - Ohio
  InstanceSize: 
    LOW:
      "EC2" : "t2.micro"
      "DB" : "db.t2.micro"
    MEDIUM:
      "EC2" : "t2.small"
      "DB" : "db.t2.small"
    HIGH:
      "EC2" : "t2.medium"
      "DB" : "db.t2.medium"
Resources:
  DBServer:
    Type: "AWS::RDS::DBInstance"
    Properties:
      AllocatedStorage: 5
      StorageType: gp2
      DBInstanceClass: !FindInMap [InstanceSize, !Ref DecideEnvSize, DB] # Dynamic mapping + Pseudo Parameter
      DBName: !Ref DatabaseName
      Engine: MySQL
      MasterUsername: !Ref DatabaseUser
      MasterUserPassword: !Ref DatabasePassword
    DeletionPolicy: Delete
  EC2server:
    Type: "AWS::EC2::Instance"
    DependsOn: DBServer
    Properties:
      ImageId: !FindInMap [MyRegionMap, !Ref "AWS::Region", AMALINUX] # Dynamic mapping + Pseudo Parameter
      InstanceType: !FindInMap [InstanceSize, !Ref DecideEnvSize, EC2]
      KeyName: AdvancedCFN
      **UserData:
        "Fn::Base64":
          !Sub |
            #!/bin/bash
            yum update -y aws-cfn-bootstrap # good practice - always do this.
            /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2server --configsets wordpress --region ${AWS::Region}
            yum -y update
    Metadata:
      AWS::CloudFormation::Init:
        configSets:
          wordpress:
            - "configure_cfn"
            - "install_wordpress"
            - "config_wordpress"
        configure_cfn:
          files:
            /etc/cfn/cfn-hup.conf:
              content: !Sub |
                [main-just some name]
                stack=${AWS::StackId}
                region=${AWS::Region}
                verbose=true
                interval=5
              mode: "000400"
              owner: root
              group: root
            /etc/cfn/hooks.d/cfn-auto-reloader.conf:
              content: !Sub |
                [cfn-auto-reloader-hook #just a name]
                triggers=post.update
                path=Resources.EC2server.Metadata.AWS::CloudFormation::Init
                action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2server --configsets wordpress --region ${AWS::Region}
              mode: "000400"
              owner: root
              group: root
            /var/www/html/index2.html:
              content: !Ref TestString  
          services:
            sysvinit:
              cfn-hup:
                enabled: "true"
                ensureRunning: "true"
                files:
                  - "/etc/cfn/cfn-hup.conf"
                  - "/etc/cfn/hooks.d/cfn-auto-reloader.conf"**
        install_wordpress:
          packages:
            yum:
              httpd: []
              php: []
              mysql: []
              php-mysql: []
          sources:
            /var/www/html: "http://wordpress.org/latest.tar.gz"
          services:
            sysvinit:
              httpd:
                enabled: "true"
                ensureRunning: "true"
        config_wordpress:
          commands:
            01_clone_config:
              cwd: "/var/www/html/wordpress"
              test: "test ! -e /var/www/html/wordpress/wp-config.php"
              command: "cp wp-config-sample.php wp-config.php"
            02_inject_dbhost:
              cwd: "/var/www/html/wordpress"
              command: !Sub |
                sed -i 's/localhost/${DBServer.Endpoint.Address}/g' wp-config.php
            03_inject_dbname:
              cwd: "/var/www/html/wordpress"
              command: !Sub |
                sed -i 's/database_name_here/${DatabaseName}/g' wp-config.php
            04_inject_dbuser:
              cwd: "/var/www/html/wordpress"
              command: !Sub |
                sed -i 's/username_here/${DatabaseUser}/g' wp-config.php
            05_inject_dbpassword:
              cwd: "/var/www/html/wordpress"
              command: !Sub |
                sed -i 's/password_here/${DatabasePassword}/g' wp-config.php  
  S3blob:
    Type: "AWS::S3::Bucket"**

错误&记录详细信息

[root@ip-172-31-25-239 ec2-user]# cd /var/log
[root@ip-172-31-25-239 log]# ls
*audit     btmp         cfn-init-cmd.log  cfn-wire.log    cloud-init-output.log  dmesg       lastlog  maillog   ntpstats  spooler   wtmp
boot.log  cfn-hup.log  cfn-init.log      cloud-init.log  cron                   dracut.log  mail     messages  secure    tallylog  yum.log
[root@ip-172-31-25-239 log]# cat cfn-hup.log
2017-12-30 10:48:15,923 [ERROR] Error: [main] section must contain stack option*
===========================================================================================
===========================================================================================
[root@ip-172-31-25-239 log]# cat cfn-init.log
2017-12-30 10:48:15,499 [DEBUG] CloudFormation client initialized with endpoint https://cloudformation.us-east-1.amazonaws.com
2017-12-30 10:48:15,501 [DEBUG] Describing resource EC2server in stack Yetagain-init-hup-try10
2017-12-30 10:48:15,616 [INFO] -----------------------Starting build-----------------------
2017-12-30 10:48:15,616 [DEBUG] Not setting a reboot trigger as scheduling support is not available
2017-12-30 10:48:15,617 [INFO] Running configSets: wordpress
2017-12-30 10:48:15,618 [INFO] Running configSet wordpress
2017-12-30 10:48:15,619 [INFO] Running config configure_cfn
2017-12-30 10:48:15,620 [DEBUG] No packages specified
2017-12-30 10:48:15,620 [DEBUG] No groups specified
2017-12-30 10:48:15,620 [DEBUG] No users specified
2017-12-30 10:48:15,620 [DEBUG] No sources specified
2017-12-30 10:48:15,620 [DEBUG] Parent directory /etc/cfn does not exist, creating
2017-12-30 10:48:15,625 [DEBUG] Writing content to /etc/cfn/cfn-hup.conf
2017-12-30 10:48:15,625 [DEBUG] Setting mode for /etc/cfn/cfn-hup.conf to 000400
2017-12-30 10:48:15,626 [DEBUG] Setting owner 0 and group 0 for /etc/cfn/cfn-hup.conf
2017-12-30 10:48:15,626 [DEBUG] Parent directory /etc/cfn/hooks.d does not exist, creating
2017-12-30 10:48:15,626 [DEBUG] Writing content to /etc/cfn/hooks.d/cfn-auto-reloader.conf
2017-12-30 10:48:15,626 [DEBUG] Setting mode for /etc/cfn/hooks.d/cfn-auto-reloader.conf to 000400
2017-12-30 10:48:15,626 [DEBUG] Setting owner 0 and group 0 for /etc/cfn/hooks.d/cfn-auto-reloader.conf
2017-12-30 10:48:15,626 [DEBUG] Parent directory /var/www/html does not exist, creating
2017-12-30 10:48:15,627 [DEBUG] Writing content to /var/www/html/index2.html
2017-12-30 10:48:15,627 [DEBUG] No mode specified for /var/www/html/index2.html. The file will be created with the mode: 0644
2017-12-30 10:48:15,627 [DEBUG] No commands specified
2017-12-30 10:48:15,627 [DEBUG] Using service modifier: /sbin/chkconfig
2017-12-30 10:48:15,627 [DEBUG] Setting service cfn-hup to enabled
2017-12-30 10:48:15,634 [INFO] enabled service cfn-hup
2017-12-30 10:48:15,635 [DEBUG] Restarting cfn-hup due to change detected in dependency
2017-12-30 10:48:15,635 [DEBUG] Using service runner: /sbin/service
*2017-12-30 10:48:15,941 [ERROR] Could not restart service cfn-hup; return code was 1
2017-12-30 10:48:15,941 [DEBUG] Service output: Stopping cfn-hup: [FAILED]
Starting cfn-hup: [FAILED]
2017-12-30 10:48:15,942 [ERROR] Error encountered during build of configure_cfn: Could not restart cfn-hup*
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 270, in build
    CloudFormationCarpenter._serviceTools[manager]().apply(services, changes)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/service_tools.py", line 161, in apply
    self._restart_service(service)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/service_tools.py", line 185, in _restart_service
    raise ToolError("Could not restart %s" % service)
ToolError: Could not restart cfn-hup
2017-12-30 10:48:15,942 [ERROR] -----------------------BUILD FAILED!------------------------
2017-12-30 10:48:15,944 [ERROR] Unhandled exception during build: Could not restart cfn-hup
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 171, in <module>
    worklog.build(metadata, configSets)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 129, in build
    Contractor(metadata).build(configSets, self)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 530, in build
    self.run_config(config, worklog)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/construction.py", line 270, in build
    CloudFormationCarpenter._serviceTools[manager]().apply(services, changes)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/service_tools.py", line 161, in apply
    self._restart_service(service)
  File "/usr/lib/python2.7/dist-packages/cfnbootstrap/service_tools.py", line 185, in _restart_service
    raise ToolError("Could not restart %s" % service)
ToolError: Could not restart cfn-hup
=============================================================================================================
==============================================================================================================
[root@ip-172-31-25-239 log]# cat /etc/cfn/cfn-hup.conf
[main-just some name]
stack=arn:aws:cloudformation:us-east-1:523324464109:stack/Yetagain-init-hup-try10/908305e0-ed4d-11e7-b9f7-500c285ebefd
region=us-east-1
verbose=true
interval=5
==========================================================================================================
=========================================================================================================
[root@ip-172-31-25-239 log]# cat /etc/cfn/hooks.d/cfn-auto-reloader.conf
[cfn-auto-reloader-hook #just a name]
triggers=post.update
path=Resources.EC2server.Metadata.AWS::CloudFormation::Init
action=/opt/aws/bin/cfn-init -v --stack Yetagain-init-hup-try10 --resource EC2server --configsets wordpress --region us-east-1

1 个答案:

答案 0 :(得分:0)

主要错误看起来像cfn-hup.log

  

2017-12-30 10:48:15,923 [错误]错误:[main]部分必须包含堆栈选项*

尝试将[main-just some name]中的[main]更改为cfn-hup.conf。作为参考,我的/etc/cfn/cfn-hup.conf看起来像这样:

[main]
stack=arn:aws:cloudformation:us-west-1:acccount_id:stack/mystack-dev-ecs-EC2-1VF68LZMOLAIY/cb2a6a80-554a-11e8-b318-503dcab41efa
region=us-west-1
interval=5
verbose=true