Подтвердить что ты не робот

Как добавить приватную информацию в переменные среды OpenShift?

Информация об аутентификации, такая как строки подключения к базе данных или пароли, почти никогда не должна храниться в системах управления версиями.

Похоже, что единственный метод указания переменных среды для приложения, размещенного на OpenShift, - передать их в репозиторий Git. Существует обсуждение на форумах OpenShift, но нет никаких полезных подсказок об этой проблеме.

Есть ли другой подход, который я могу использовать для добавления аутентификационной информации в мое приложение без необходимости ее фиксации в репозитории?

4b9b3361

Ответ 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.