1

我的 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"
    ]]}},

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

4

1 回答 1

1

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

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

然后制作一个新的 AMI 让它适用于我自己的初始化脚本

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

于 2012-03-23T17:58:00.097 回答