У меня есть приложение Rails 4.2.1, использующее Ruby 2.2. Я пытаюсь использовать всякий раз, когда Gem для обновления задач cron на моем Elastic Beanstalk из моей базы кода. Я следил за несколькими ресурсами AWS, где вы можете добавлять файлы в папку .ebextensions
и использовать обработчик пост-развертывания EB через файлы оболочки. Вот пара ресурсов:
- https://forums.aws.amazon.com/thread.jspa?threadID=137136
- http://www.dannemanne.com/posts/post-deployment_script_on_elastic_beanstalk_restart_delayed_job
- http://blog.endpoint.com/2015/01/elastic-beanstalk-wheNever.html
После статей в блоге я добавил файл ниже, раскомментировал строку gitignore о файлах в папке .ebextensions
и развернул приложение. К сожалению, я смог увидеть какие-либо изменения. Я проверил файлы журналов (log/eb-tools.log
, log/cron
и т. Д.) И обработал все файлы журналов для файла оболочки, который я создаю, когда бы то ни было, и многое другое. Но не повезло.
commands:
create-post-dir:
command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_update_cron.sh"
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
# Using similar syntax as the appdeploy pre hooks that is managed by AWS
# Loading environment data
EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir)
EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
EB_APP_CURRENT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir)
EB_APP_PIDS_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir)
# Setting up correct environment and ruby version so that bundle can load all gems
. $EB_SUPPORT_DIR/envvars
. $EB_SCRIPT_DIR/use-app-ruby.sh
# Now we can do the actual restart of the worker. Make sure to have double quotes when using env vars in the command.
su -c "cd $EB_APP_CURRENT_DIR; bundle exec whenever --update-cron --set='environment=$RACK_ENV'" - $EB_APP_USER
Как я могу убедиться, что этот файл оболочки вызывается? Могу ли я каждый раз тестировать его без нового развертывания? Кроме того, я открыт для других вариантов, если самоцвет «Когда угодно» - не лучший вариант. В основном я хочу иметь возможность управлять своими задачами cron в коде и под контролем версий.
Заранее спасибо!
ОБНОВИТЬ:
- У меня был тип в папке
.ebextensions
, из-за чего он не добавлялся. После того, как это было исправлено, я смог читать сообщения об ошибках и создавать cron-скрипт, который обновлял crontab с помощью гема Whe when.
whenever: command not found
. Гем установлен на машине, и я могу запуститьwhenever
, когда вхожу в систему через ssh. Любые идеи? - person ferdynator   schedule 26.05.2016