AWS Cloudformation用户数据问题

时间:2019-02-27 13:36:40

标签: amazon-web-services amazon-cloudformation

在启动传递用户数据的cloudformation模板时遇到问题。似乎内部没有命令在运行。实例运行状况良好,无需运行这些命令。请帮助解决。

AWSTemplateFormatVersion : 2010-09-09
Description: sonar
Resources:
  Ec2Instance:
    Type: AWS::EC2::Instance 
    Properties:
      KeyName: sivakey_feb
      ImageId: ami-04bfee437f38a691e
      UserData:
        Fn::Base64: 
          !Sub |
            #!/bin/bash -xe
            sudo chown -R ec2-user:ec2-user /opt/sonar/temp/conf
            /opt/sonar/bin/linux-x86-64/sonar.sh start
      InstanceType: t2.large
      Tags:
        -
          Key: Name
          Value: sonar

1 个答案:

答案 0 :(得分:2)

所以我看不到您的脚本有任何问题。但我建议采取以下行动;

  1. 可执行脚本标志

    chmod +x /opt/sonar/bin/linux-x86-64/sonar.sh
    
  2. 出于调试目的,添加以下行

    exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
    

所以您的用户数据应该看起来像

    #!/bin/bash -xe
    exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
    sudo chown -R ec2-user:ec2-user /opt/sonar/temp/conf
    chmod +x /opt/sonar/bin/linux-x86-64/sonar.sh
    /opt/sonar/bin/linux-x86-64/sonar.sh start

aws docs中摘录的其他行;

  

要解决EC2实例引导程序上的问题而不必通过SSH访问实例,可以将代码添加到用户数据bash脚本中,该脚本会将所有输出重定向到/var/log/user-data.log和到/ dev / console。执行代码后,您可以在控制台中看到用户数据调用日志。