如何找出EC2用户数据脚本失败的位置?

时间:2012-03-22 15:12:47

标签: amazon-ec2 amazon-web-services amazon-cloudformation

我的CloudFormation模板中有以下用户数据脚本:

"UserData" : {"Fn::Base64" : {"Fn::Join" : ["", [
      "#!/bin/bash\n",
      "cd /home/www","\n",
      "sudo su www","\n",
      "git clone git@github.com:company-name/web-app.git -b master2 app","\n",
      "cd app","\n",
      "phing clean prepare configure -Dpropsfile ./build/props/build.ec2.properties","\n",
      "\n",
      "/opt/aws/bin/cfn-signal",
      " -e $?",
      " '", {"Ref" : "WebServerPort"}, "'",
      "\n"
    ]]}},

这会运行一个预先配置的私有ami,我们基于默认的cloudformation模板 如果我自己启动一个实例,我可以通过git / build进程运行w / o错误 但是当cloudformation启动服务器时,它似乎从未运行过

1 个答案:

答案 0 :(得分:1)

看起来,因为我从一个启动了cloudformation的实例创建了AMI,它已经运行了init脚本并将它们缓存为“run”,因此任何新实例都已经有了这些缓存文件而且从不运行我的脚本。

sudo rm /var/lib/cloud/sem/user-scripts.*
sudo rm /var/lib/cloud/sem/consume_userdata.*

然后创建一个新的AMI允许它适用于我自己的init脚本

也不要使用su,而是后来chown:)