Skip to content

Instantly share code, notes, and snippets.

@steverob
Forked from t2/sidekiq.config
Last active September 24, 2015 19:24
Show Gist options
  • Save steverob/19daa36cc1ce53093edc to your computer and use it in GitHub Desktop.
Save steverob/19daa36cc1ce53093edc to your computer and use it in GitHub Desktop.
Sidekiq on AWS ElasticBeanstalk
# Symlink the ondeck database.yml to database.yml.example
# .ebextensions/database_yml.config
files:
"/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_symlink_database_yml.sh":
mode: "000777"
content: |
#!/bin/bash
cd /var/app/ondeck/config
ln -sf database.sample.yml database.yml
# .ebextensions/packages.config
packages:
yum:
git: []
postgresql93-devel: []
# Original: http://www.snip2code.com/Snippet/256399/Amazon-Elastic-Beanstalk-Sidekiq
# .ebextensions/sidekiq.config
commands:
create_post_dir:
command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/etc/rsyslog.d/11-sidekiq.conf":
mode: '000644'
content: |
EB_CONFIG_APP_LOGS=$(/opt/elasticbeanstalk/bin/get-config container -k app_log_dir)
$InputFileName $EB_CONFIG_APP_LOGS/sidekiq.log
$InputFileTag sidekiq
$InputFileStateFile sidekiq-state
$InputFileSeverity info
$InputFileFacility local6
$InputRunFileMonitor
"/opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_sidekiq":
mode: "000755"
content: |
#!/bin/bash
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
EB_CONFIG_APP_CURRENT=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
EB_CONFIG_APP_LOGS=$(/opt/elasticbeanstalk/bin/get-config container -k app_log_dir)
EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
EB_CONFIG_APP_PIDS=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)
. $EB_SUPPORT_DIR/envvars
. $EB_SCRIPT_DIR/use-app-ruby.sh
cd $EB_CONFIG_APP_CURRENT
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 20
rm -rf $PIDFILE
fi
fi
. $EB_SUPPORT_DIR/envvars.d/sysenv
sleep 10
su -s /bin/bash -c "bundle exec sidekiq \
-P $EB_CONFIG_APP_PIDS/sidekiq.pid \
-C $EB_CONFIG_APP_CURRENT/config/sidekiq.yml \
-L $EB_CONFIG_APP_LOGS/sidekiq.log \
-d" $EB_APP_USER
"/opt/elasticbeanstalk/hooks/appdeploy/pre/03_mute_sidekiq":
mode: "000755"
content: |
#!/bin/bash
EB_CONFIG_APP_PIDS=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment