Установить переменную среды из credstash на Elastic Beanstalk - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть некоторые проблемы с переменными среды 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 Ответ

0 голосов
/ 12 февраля 2019

Ответ должен был установить 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.

...