Я работаю над развертыванием приложения (и подготовкой к будущим развертываниям с большим количеством серверов). В настоящее время приложение работает на 4 серверах, и есть Dev, Staging и Production Environments. Я написал сценарий Python для обеспечения каждого сервера и настройки большого количества необходимых мне в каждом поле.Развертывание, несколько серверов с переменными env
Однако у меня есть большой файл, содержащий переменные окружения (кстати, это приложение Laravel), и я пытаюсь выяснить способ его включения в подготовку.
Im пытается избежать ручного копирования его на каждый сервер при каждом развертывании. Кроме того, если мне нужно добавить или изменить переменную env в будущем, я бы хотел, чтобы вы не пытались вручную синхронизировать каждую копию на каждом сервере.
Однако я также не хочу передавать его в github с помощью сценария подготовки.
Любые предложения, чтобы сохранить этот процесс более сухим? Что лучше всего подходит для обработки конфигураций окружающей среды для развертывания в разных средах?
Спасибо за ваш ответ. Наличие скрипта Python генерирует все звуки соблазнительные, но тогда возникает вопрос: «Где эти значения, которые скрипт ссылается, хранится?» Есть ли какое-нибудь безопасное место для размещения их? (Помимо GitHub). Я полагаю, что я мог бы хранить их на одном из моих серверов, и каждый экземпляр сервера мог их scp их оттуда? Возможно, другой вариант заключается в дистанционном обеспечении каждого сервера. Таким образом, создание условий, из моей локальной среды. Таким образом, я мог бы хранить всю конфиденциальную информацию локально? – djt
Не существует безопасного ответа на эту проблему. Самый безопасный подход - это то, как вы пытаетесь избежать того, что должен иметь привилегированный пользователь для доступа к своим учетным данным из «хранилища» и поместить файл «.env» в среду только с кредитами для этой среды. Этот привилегированный пользователь может даже не быть самими разработчиками. В идеале хранилище будет доступно только локально для инициализации скрипта Python и не будет открывать его в сети. Все другие параметры, требующие создания учетных данных, доступных для сети, создают проблемы даже при использовании таких схем, как OAuth, TLS и постоянное шифрование imo. –