Created
May 29, 2014 00:48
-
-
Save jgautsch/b1d48d75f060c8fd5f26 to your computer and use it in GitHub Desktop.
AWS Elastic Beanstalk Ruby 2.0/Passenger Environment - .ebextensions tweaks and Sidekiq configuration. This is known to work fine with AWS Elastic Beanstalk 's 64bit Amazon Linux 2014.03 v1.0.2 running Ruby 2.0 (Passenger Standalone) stack. This is everything in my .ebextensions folder. Based on https://gist.github.com/gcarrion-gfrmedia/11396682
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Fixing permissions of packaged gems | |
files: | |
"/opt/elasticbeanstalk/hooks/appdeploy/pre/10_fixing_permission.sh": | |
content: | | |
#!/usr/bin/env bash | |
# . /opt/elasticbeanstalk/containerfiles/envvars | |
. /opt/elasticbeanstalk/support/envvars | |
CACHE_GEM_DIR=$EB_CONFIG_APP_ONDECK/vendor/cache | |
if [ -d $CACHE_GEM_DIR ] | |
then | |
chown -R webapp:webapp $CACHE_GEM_DIR | |
echo "Modified the owner of $CACHE_GEM_DIR files" | |
else | |
echo "Nothing in $CACHE_GEM_DIR" | |
fi | |
true | |
mode: "000755" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Modified system bundle script to run 'bundle package' | |
files: | |
"/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh": | |
content: | | |
#!/usr/bin/env bash | |
. /opt/elasticbeanstalk/support/envvars | |
set -xe | |
cd $EB_CONFIG_APP_ONDECK | |
if [ -f Gemfile ]; then | |
echo "running 'bundle install' with Gemfile:" | |
cat Gemfile | |
bundle install | |
if [ $? != 0 ]; then | |
echo "ERROR: bundle install failed!" | |
exit 1 | |
else | |
echo "bundle install succeeded" | |
fi | |
else | |
echo "no Gemfile found! Skipping bundle install stage!" | |
fi | |
if [ -f Gemfile.lock ]; then | |
echo "encountered a Gemfile.lock, setting proper permissions" | |
chown $EB_CONFIG_APP_USER:$EB_CONFIG_APP_USER Gemfile.lock | |
else | |
echo "no Gemfile.lock file found, so no permissions to set on it" | |
fi | |
if [ "$BUNDLE_DISABLE_SHARED_GEMS" = "1" ]; then | |
cd $EB_CONFIG_APP_ONDECK; | |
chown -R $EB_CONFIG_APP_USER:$EB_CONFIG_APP_USER ./$BUNDLE_PATH; | |
echo "Modified the owner of '$BUNDLE_PATH' files"; | |
fi | |
true | |
mode: "000755" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Sidekiq interaction and startup script | |
# Sidekiq interaction and startup script | |
files: | |
"/opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_sidekiq": | |
mode: "000755" | |
content: | | |
#!/bin/bash | |
# . /opt/elasticbeanstalk/containerfiles/envvars | |
. /opt/elasticbeanstalk/support/envvars | |
PIDFILE=$EB_CONFIG_APP_PIDS/sidekiq.pid | |
cd $EB_CONFIG_APP_CURRENT | |
if [ -f $PIDFILE ] | |
then | |
SIDEKIQ_LIVES=$(/bin/ps -o pid= -p `cat $PIDFILE`) | |
if [ -z $SIDEKIQ_LIVES ] | |
then | |
rm -rf $PIDFILE | |
else | |
kill -TERM `cat $PIDFILE` | |
sleep 10 | |
rm -rf $PIDFILE | |
fi | |
fi | |
BUNDLE=/usr/local/bin/bundle | |
SIDEKIQ=/usr/local/bin/sidekiq | |
# $BUNDLE exec $SIDEKIQ \ | |
# -e production \ | |
# -P /var/app/containerfiles/pids/sidekiq.pid \ | |
# -C /var/app/current/config/sidekiq.yml \ | |
# -L /var/app/containerfiles/logs/sidekiq.log \ | |
# -d | |
RAILS_ENV=production bundle exec $SIDEKIQ \ | |
-e production \ | |
-P /var/app/support/pids/sidekiq.pid \ | |
-C /var/app/current/config/sidekiq.yml \ | |
-L log/sidekiq.log \ | |
-d | |
"/opt/elasticbeanstalk/hooks/appdeploy/pre/03_mute_sidekiq": | |
mode: "000755" | |
content: | | |
#!/bin/bash | |
# . /opt/elasticbeanstalk/containerfiles/envvars | |
. /opt/elasticbeanstalk/support/envvars | |
PIDFILE=$EB_CONFIG_APP_PIDS/sidekiq.pid | |
if [ -f $PIDFILE ] | |
then | |
SIDEKIQ_LIVES=$(/bin/ps -o pid= -p `cat $PIDFILE`) | |
if [ -z $SIDEKIQ_LIVES ] | |
then | |
rm -rf $PIDFILE | |
else | |
kill -USR1 `cat $PIDFILE` | |
sleep 10 | |
fi | |
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
container_commands: | |
seeddb: | |
command: 'export HOME=/root; rake db:seed' | |
leader_only: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commands: | |
test: | |
command: "bundle config build.nokogiri --use-system-libraries" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .ebextensions/packages.config | |
packages: | |
yum: | |
postgresql-devel: [] | |
git: [] | |
libxml2: [] | |
libxml2-devel: [] | |
libxslt: [] | |
libxslt-devel: [] |
Hi Jon & Pato,
I managed to make the script work by adding "export EB_CONFIG_APP_ONDECK=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)" on line 9 in "002_bundle_pack.config". I
It seems that AWS has changed its policy regarding the environment variables, you should now acces them using the scripts described there: https://forums.aws.amazon.com/thread.jspa?threadID=164756
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In 0002_bundle_pack.config appear the next message:
Activity execution failed, because: command failed with error code 1: /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh
/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh: line 6: cd: HOME not set (Executor::NonZeroExitStatus)
How can I fix this ?