我的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启动服务器时,它似乎从未运行过
答案 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:)