在AWS ec2上的用户数据脚本中执行rake任务

时间:2012-03-29 13:27:39

标签: amazon-ec2 ec2-ami ec2-api-tools

我正在尝试完全启动我的Rails应用程序,作为传递给启动实例EC2 API的用户数据脚本的一部分。该脚本设置正确的密钥,从我的git repo下载应用程序,然后它应该运行一些初始化脚本,从:

开始
bundle install

应安装所有缺失的宝石。但是,它失败了。其他命令工作正常。

原来的失败是它无法找到bundle命令,我已经通过手动设置环境变量修复了这个问题,但Ruby仍然无法找到bundler gem。

我的问题是,当我ssh(一旦用户数据脚本失败)到启动的实例时,bundler工作没有问题。这使我无法调试原始问题。

在哪个凭据下,用户数据是在ec2中执行的?这可能是问题吗?是否有一些特殊原因导致无法从bash脚本调用bundler?

1 个答案:

答案 0 :(得分:3)

您是否将目录更改为rails app?

您也可以尝试只调用bundle。如果您还没有找到解决方案,我会尝试这样的事情。

#Pipe stdout and stderr to a log file.   
exec &> /home/ubuntu/startup.log

DIR=/home/ubuntu/[rails app]

echo "[START UP] change directory: " $DIR
cd $DIR

echo "[START UP] Update code" 
sudo -u ubuntu git pull origin master

echo "[START UP] Bundling latest codebase"
bundle