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

Amazon ec2 在AWS ec2上的用户数据脚本中执行rake任务,amazon-ec2,ec2-ami,ec2-api-tools,Amazon Ec2,Ec2 Ami,Ec2 Api Tools,我正在尝试将Rails应用程序作为传递给启动实例EC2API的用户数据脚本的一部分完全启动。脚本设置正确的密钥,从my git repo下载应用程序,然后应该运行一些初始化脚本,首先是: bundle install 应该安装所有丢失的gems。然而,它失败了。其他命令工作正常 最初的失败是它找不到bundle命令,我通过手动设置环境变量解决了这个问题,但Ruby仍然找不到bundler gem 我这里的问题是,当我将ssh(一旦用户数据脚本失败)连接到启动的实例时,bundler就可以正常工

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

bundle install
应该安装所有丢失的gems。然而,它失败了。其他命令工作正常

最初的失败是它找不到bundle命令,我通过手动设置环境变量解决了这个问题,但Ruby仍然找不到bundler gem

我这里的问题是,当我将ssh(一旦用户数据脚本失败)连接到启动的实例时,bundler就可以正常工作。这使我无法调试原始问题


ec2中执行用户数据的凭据是什么?这就是问题所在吗?为什么不能从bash脚本调用bundler有什么特殊原因吗?

您是否将目录更改为rails应用程序

您也可以尝试调用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

您是否将目录更改为rails应用程序

您也可以尝试调用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

不完全是一个解决方案,但导致了它:)@zmilojko那么解决方案是什么?不完全是一个解决方案,但导致了它:)@zmilojko那么解决方案是什么?