Как rake_deploy в jelastic работает с ENV - PullRequest
0 голосов
/ 26 апреля 2018

Я настраиваю производственный и подготовительный сервер с Jelastic и nginx для запуска Ruby on Rails. Имя моей базы данных и пароль находятся в переменных окружения. Я установил их в оболочке через ssh в .bashrc и в /etc/nginx/app_servers/nginx-passenger.conf, как описано в Ссылка на конфигурацию для Пассажира + Nginx но rake_deploy не может их найти. Я написал rake-задачу, которая выводит ENV, поэтому я вижу, что это не то же самое, когда я запускаю задачу как часть развертывания и из командной строки через ssh. Приложение Rails получает их через the passenger.conf, так что это работает, но это страшное дублирование.

Есть ли способ установить мои переменные среды в одном месте в этой настройке, чтобы и приложение Rails, и rake_deploy, и оболочка могли получить к ним доступ?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Ответ в том, что это невозможно сделать.

Невозможно хранить ваши секреты в средах ENV и использовать их как для вашего приложения rails, так и для задач rake, если вы используете установку Jelastics Ruby, которая использует rake_deploy для запуска задач rake при развертывании.

Причина в том, что rake_deploy запускается как root. Я решил добавить это грабли-задачи:

task :env do puts ENV.to_h.to_yaml sh %[whoami] end

, который сначала печатает ENV, а затем печатает, от какого пользователя запускается команда.

Или, возможно, есть способ, если я смогу сначала запустить задачу rake, которая редактирует .bash_profile из root, не помещая ее в систему контроля версий. Но он не чувствует себя ни безопасным, ни профессиональным.

Также некуда девать ваши секреты, которые хранятся вне контроля версий и сохраняются между развертываниями.

Мой провайдер PaaS связывался с Jelastic, чтобы сообщить им об этом, и они не заинтересованы в его изменении.

0 голосов
/ 26 апреля 2018

Эти переменные "ALL_REQUESTS_LOCAL, DB_ADAPTER, DB_HOST, DB_NAME, DB_PASSWORD, DB_USERNAME, EMAIL_USER, EMAIL_PASSWORD, EMAIL_DOMAIN, EMAIL_ADDRESS" должны быть установлены в rakefile. «nginx_passenger.conf» - это файл конфигурации для Nginx, который не имеет ничего общего с переменными среды. Также вы можете попытаться добавить эти переменные в .bash_profile или .bashrc, чтобы сделать их доступными для rake

...