Установить переменную среды из credstash на Elastic Beanstalk
У меня есть некоторые проблемы с переменными среды Elastic Beanstalk, которые я хочу установить из credstash.
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: SECRET_KEY_BASE
value: $(credstash --region eu-west-1 -t credstash get test.secret_key_base)
Я указал, что credstash должен быть установлен из Python:
packages:
python:
credstash: []
Однако при развертывании прекомпиляции активов происходит сбой (rake assets:precompile
).
Страница состояния EB показывает, что развертывание приложения не выполнено.
/opt/elasticbeanstalk/support/envvars: line 5: credstash: command not found
...
+ su -s /bin/bash -c 'bundle exec rake assets:precompile' webapp
`/home/webapp` is not a directory.
Bundler will use `/tmp/bundler/home/webapp' as your home directory temporarily.
rake aborted!
ArgumentError: `secret_key_base` for production environment must be a type of String`
secret_key_base
установлен в ENV['SECRET_KEY_BASE']
в secrets.yml
, поэтому он должен содержать значение из credstash. Однако из-за credstash: command not found
вывод, я предполагаю, что credstash не был установлен или не находится на пути по какой-то причине.
Кто-нибудь знает, что здесь может происходить?
1 ответ
Ответ должен был установить RAILS_SKIP_ASSET_COMPILATION
в true
, Это пропустит /opt/elasticbeanstalk/hooks/appdeploy/pre/11_asset_compilation.sh
хук, который запускается до установки credstash.
Вместо этого я включил это в .config
файл:
container_commands:
01_assets_compile:
command: bundle exec rake assets:precompile RAILS_ENV=production
Это прекомпилирует ресурсы в каждом контейнере, когда будет установлен credstash.