Как стать автором
Обновить

Переменные окружения для начинающих разработчиков или использование .env файла в разработке программного обеспечения

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров22K
Всего голосов 13: ↑10 и ↓3+8
Комментарии6

Комментарии 6

А ещё лучше не хранить код и конфиги в одной папке. Например, кладём файлики в папку /usr/local/etc/, ставим поменьше прав для всех и читаем оттуда. Если запускаем в контейнере - можно скопировать в образ (тоже плохо), а после запуска и чтения вообще удалить.

В этом случае можно спокойно удалять папку с кодом при обновлениях, у нас нет мусора в виде кучи конфигов, сертификатов и ключей в общей папке.

И никто не закоммитит случайно сертификат с именем "my_private_key.pem.beckap".

Что касается переменных окружения - то нелишним будет добавить что все порождаемые процессы тоже будут иметь к ним доступ (не всегда, зависит от параметов запуска). Запускает ваш питон-скрипт какой-нибудь бинарник tesseract, а тот получает все ваши пароли к базам и AWS-облаку..

Вдобавок, переменные окружения лежат в файликах в /run/ для процесса и, хотя и доступны не всем, но другой процесс, в принципе, может получить к ним доступ. Как и к конфигам в папке, впрочем.

Простите, но не "beckap", a "backup".

Как раз ".backup" может встречаться в ".gitignore", но написанное с опечаткой пройдёт этот фильтр.

Не хватает информации о приключениях применении .env в Docker и анекдота как с ними (не) работает Nginx.

Не могу уловить зачем этот велосипед: если у Вас вмки, то вы же все равно провижините конфигурацию веб сервера конфигурейшен менеджмент тулой типо ансибл, так пусть он и займётся секретами в связки с ансибл-вольт. Мы и деплоим все через ансибл к слову, очень даже удобно.

Если у вас микросервисы, то там вообще проблем нет: секреты кубернетиса, hashicorp vault и много-много всего.

Не маловажно отметить, что решить проблему секретов можно и средствами самого ci/cd.

Если подитожить: не изобретайте велосипед, обратитесь "DevOps инженеру" это его работа в конце-то концов.)

Минутку, но ведь "секреты кубернетиса" внутри контейнера так и будут переменными окружения? Ну ок, или подмонтированы как дотфайлы, что приводит нас к "см пункт 1".

решить проблему секретов можно и средствами самого ci/cd

А там предлагается какой-то другой способ кроме как переменные окружения?

Вот про ансибл и провиженинг я с вами соглашусь - если есть инструмент, то он может по шаблону создать готовый конфиг-файл и положить его куда надо. В принципе, можно и заранее с типизированными проверенными переменными - создать целый config.py .

Зарегистрируйтесь на Хабре, чтобы оставить комментарий