Как добавить приватную информацию в переменные среды OpenShift?
Информация об аутентификации, такая как строки подключения к базе данных или пароли, почти никогда не должна храниться в системах управления версиями.
Похоже, что единственный метод указания переменных среды для приложения, размещенного на OpenShift, - передать их в репозиторий Git. Существует обсуждение на форумах OpenShift, но нет никаких полезных подсказок об этой проблеме.
Есть ли другой подход, который я могу использовать для добавления аутентификационной информации в мое приложение без необходимости ее фиксации в репозитории?
Ответы
Ответ 1
SSH в ваше приложение и перейдите в свой каталог данных
cd app-root/data
в этом каталоге создайте файл с вашими переменными (например, ".myenv" ) с контентом вроде
export MY_VAR="something"
а затем в вашем репозитории в ".openshift/action_hooks/pre_start" добавьте эту строку
source ${OPENSHIFT_DATA_DIR}/.myenv
Ответ 2
Теперь Openshift поддерживает настройку среды vaiables с помощью инструмента командной строки rhc следующим образом:
rhc set-env HEROKU_POSTGRESQL_DB_URL='jdbc:postgresql://myurl' -a myapp
Я думаю, что это проще, чем все другие ответы...
Смотрите: https://blog.openshift.com/taking-advantage-of-environment-variables-in-openshift-php-apps/
Ответ 3
Добавление .openshift/action_hooks/pre_start_*
не очень классно, потому что вам нужно изменить свой репозиторий в дополнение к добавлению файла с помощью SSH.
Для nodejs редактирование nodejs/configuration/node.env
работает хорошо в течение нескольких дней, но я испытал, что файл несколько раз возвращался. Поэтому он нестабилен.
Я нашел гораздо лучшее решение.
echo -n foobar > ~/.env/user_vars/MY_SECRET
Это работает отлично.
(Возможно, это то, что сделано с помощью rhc set-env ...
?)
Надеюсь, это поможет!
Ответ 4
Другой вариант - создать ветку openshift
вашего проекта на локальном компьютере. Вы можете создать папку/файлы для личной информации, которая живет только в ветки openshift
. Вам все равно нужно будет генерировать файлы в вашем тэге pre_start
, что-то вроде source ${OPENSHIFT_REPO_DIR}/.private
.
Затем развернитесь в своей ветке master
, объединитесь в свою ветвь openshift
и нажмите из ветки openshift
на главную ветвь OpenShift. Сначала этот звук запутан, но он делает очень простой рабочий процесс, особенно если вы используете origin
.
Это будет рабочий процесс, если ваше происхождение было на GitHub.
github/master <--> local/master --> local/openshift --> openshift/master
Обратите внимание, что единственная двунаправленная связь находится между github и вашим локальным мастером, поэтому не должно быть причин, по которым ваши учетные данные "выходят".
Этот подход также имеет дополнительное преимущество в том, что он может сохранять любые специфические изменения OpenShift, ограниченные ветвью openshift
(например, для Gemfiles, переменных ENV, путей и т.д.).
Что касается безопасности, на сервере OpenShift репо должно иметь такую же безопасность, что и ваш $OPENSHIFT_DATA_DIR
, поэтому вы больше не подвергаете себя воздействию.
Протест:
В зависимости от вашей структуры файлы в вашем $OPENSHIFT_REPO_DIR
могут быть напрямую доступны через HTTP. Вы должны быть в состоянии предотвратить это с помощью файла .htaccess
.