2016-08-11 3 views
0

Я работаю над развертыванием приложения (и подготовкой к будущим развертываниям с большим количеством серверов). В настоящее время приложение работает на 4 серверах, и есть Dev, Staging и Production Environments. Я написал сценарий Python для обеспечения каждого сервера и настройки большого количества необходимых мне в каждом поле.Развертывание, несколько серверов с переменными env

Однако у меня есть большой файл, содержащий переменные окружения (кстати, это приложение Laravel), и я пытаюсь выяснить способ его включения в подготовку.

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

Однако я также не хочу передавать его в github с помощью сценария подготовки.

Любые предложения, чтобы сохранить этот процесс более сухим? Что лучше всего подходит для обработки конфигураций окружающей среды для развертывания в разных средах?

ответ

0

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

  1. Файл с расширением vhost. Vhost сделает переменные среды доступными для apache и PHP. Но это не сделает их доступными для процессов командной строки, таких как Artisan.

  2. Профиль пользователя bash: переменные среды для каждой среды могут быть объявлены в профиле bash (.profile, .bashrc) и будут доступны каждый раз, когда сервер загружается во все процессы.

  3. Сценарий Python может автоматически генерировать .ENV-файл автоматически для каждой среды. Файл .env не находится в репо и доступен только Laravel, если он существует. Это, вероятно, будет подход DRYist - но для этого потребуется репозиторий, который сохранил все настройки env во всех средах, чтобы он был менее безопасным.

+0

Спасибо за ваш ответ. Наличие скрипта Python генерирует все звуки соблазнительные, но тогда возникает вопрос: «Где эти значения, которые скрипт ссылается, хранится?» Есть ли какое-нибудь безопасное место для размещения их? (Помимо GitHub). Я полагаю, что я мог бы хранить их на одном из моих серверов, и каждый экземпляр сервера мог их scp их оттуда? Возможно, другой вариант заключается в дистанционном обеспечении каждого сервера. Таким образом, создание условий, из моей локальной среды. Таким образом, я мог бы хранить всю конфиденциальную информацию локально? – djt

+0

Не существует безопасного ответа на эту проблему. Самый безопасный подход - это то, как вы пытаетесь избежать того, что должен иметь привилегированный пользователь для доступа к своим учетным данным из «хранилища» и поместить файл «.env» в среду только с кредитами для этой среды. Этот привилегированный пользователь может даже не быть самими разработчиками. В идеале хранилище будет доступно только локально для инициализации скрипта Python и не будет открывать его в сети. Все другие параметры, требующие создания учетных данных, доступных для сети, создают проблемы даже при использовании таких схем, как OAuth, TLS и постоянное шифрование imo. –