weranda
@weranda

Где и как хранить переменные окружения в Linux/Mac?

Приветствую.

Не очень пойму, где лучше хранить переменные окружения приложения в переменных среды. Как я понял, есть уровни хранения:
— ОС: /etc/environment.d (в Ubuntu, в mac не знаю).
— Пользователь: /home/user_name/.bashrc|.bash_profile (в Ubuntu).
— Сеанс терминала (не имеет смысла, так как все исчезает при его закрытии).
— В файле самого приложения (есть риск случайной утечки, к примеру, при коммите куда-либо).

Мне кажется более логичным хранить переменные за пределами приложения, чтобы они были доступны в разных случаях, но тут возникает несколько вопросов. Допустим, есть 10 проектов и у каждого из них есть свой API-ключ YouTube. Окей. В папке ОС Ubuntu /etc/environments.d/ создам 10 .conf файлов по маске project_name.conf. А как тогда быть тогда с именованием переменной в каждом файле? Не создам же я 10 одинаковых переменных, к примеру, YouTubeIPIKey=XXX — они все будут перезатираться и в итоге останется только одна переменная. Поэтому им надо давать разные имена, но какой тогда смысл хранить переменные в разных файлах, если нельзя использовать одинаковые названия. Тогда проще запихнуть их все в один файл, но с разными названиями.

Покажите, пожалуйста, примеры из реальной практики по хранению переменных среды при множестве проектов. Недопонимание есть в этом вопросе. Читал, смотрел видюхи, но, кажется, что-то я упустил.
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Эту фичу - хранить ключи в переменных окружения, придумали для прод-серверов. Там обычно не крутится 10 проектов, и никаких коллизий нет.
На дев-машине - ну перетирайте, не используете же вы их все одновременно? Или, если нужны одновременно, и загрузка при каждом старте вас чем-то не устраивает - можно обернуть каждый проект в докер, там переменные окружения будут изолированы.
Ответ написан
Комментировать
solotony
@solotony
покоряю пик Балмера
где хранить вытекает из логики и архитектуры приложения. причем эти способы можно комбинировать.

например ключи доступа я буду хранить в .env файле с минимальными правами на каждом сервисе который создается напрямую с моего компьютера. а адреса серверов будут лежать в каком-то глобальном конфиге для хоста. ну а вот какие-нибудь параметры для запуска приложения вполне могут раздаваться при ci/cd и спокойно лежать в гите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы