Комментарии 6
А ещё лучше не хранить код и конфиги в одной папке. Например, кладём файлики в папку /usr/local/etc/
, ставим поменьше прав для всех и читаем оттуда. Если запускаем в контейнере - можно скопировать в образ (тоже плохо), а после запуска и чтения вообще удалить.
В этом случае можно спокойно удалять папку с кодом при обновлениях, у нас нет мусора в виде кучи конфигов, сертификатов и ключей в общей папке.
И никто не закоммитит случайно сертификат с именем "my_private_key.pem.beckap".
Что касается переменных окружения - то нелишним будет добавить что все порождаемые процессы тоже будут иметь к ним доступ (не всегда, зависит от параметов запуска). Запускает ваш питон-скрипт какой-нибудь бинарник tesseract, а тот получает все ваши пароли к базам и AWS-облаку..
Вдобавок, переменные окружения лежат в файликах в /run/
для процесса и, хотя и доступны не всем, но другой процесс, в принципе, может получить к ним доступ. Как и к конфигам в папке, впрочем.
Не могу уловить зачем этот велосипед: если у Вас вмки, то вы же все равно провижините конфигурацию веб сервера конфигурейшен менеджмент тулой типо ансибл, так пусть он и займётся секретами в связки с ансибл-вольт. Мы и деплоим все через ансибл к слову, очень даже удобно.
Если у вас микросервисы, то там вообще проблем нет: секреты кубернетиса, hashicorp vault и много-много всего.
Не маловажно отметить, что решить проблему секретов можно и средствами самого ci/cd.
Если подитожить: не изобретайте велосипед, обратитесь "DevOps инженеру" это его работа в конце-то концов.)
Минутку, но ведь "секреты кубернетиса" внутри контейнера так и будут переменными окружения? Ну ок, или подмонтированы как дотфайлы, что приводит нас к "см пункт 1".
решить проблему секретов можно и средствами самого ci/cd
А там предлагается какой-то другой способ кроме как переменные окружения?
Вот про ансибл и провиженинг я с вами соглашусь - если есть инструмент, то он может по шаблону создать готовый конфиг-файл и положить его куда надо. В принципе, можно и заранее с типизированными проверенными переменными - создать целый config.py .
Переменные окружения для начинающих разработчиков или использование .env файла в разработке программного обеспечения