Как правильно хранить пароли от БД в git репозитории?
Имеем веб-проект, код которого размещается на гитхабе или битбакете. Есть некий файл с настройками подключения к бд (логин и пароль). Коммитить этот файл с реальными данными не совсем правильно с точки зрения безопасности. Если править конфиг вручную после развертывания проекта то могут возникать конфликты в момент деплоя (git pull).
Как правильно работать с паролями и важными данными и удаленными git репозиториями?
Никак не хранить их в git репозитории либо шифровать файлик с кредами в gpg архив по личным ключам + pass. Это пожалуй наиболее универсальный способ. Для любителей ansible есть ansible vault
у меня два вопроса:
1) для флайплана нужно ставить что-то на удаленном сервере? (как минимум я вижу что требуются некоторые настройки на сервере что бы работал sudo)
2) А вы смотрели на ansible? как по мне намного проще и удобнее вашего варианта.
anatoly60: да мильен их. Делаем билд (deb пакет, zip/tar.gz архив и т.д.) и какая-нибудь система для деплоя (плейбук для ansible, capistrano и подобные... в зависимости от того на чем вы собственно пишите бэкэнд).
Сергей Протько: 1) Ни чего не трубуется. Нужно просто настроить SSH что бы открывался через ваш приватный ключь без паролья. Это в любом случае удобная штука когда работаешь с кучей серверов. Я ей и до расписания полетов пользовался.
2) ansible тоже самое. И к стати так же надо настроить id_rsa как и в полетах. Только там вы пишите конфиги для приложения а тут просто яваскрипт. Делаете как в gulp или grunt расписания, и потом отправляете свой проект в полет на stage или продакшн.
Еще одно приимущество flightplans это его инеграция с gulp. То есть пере вылетом, можно провести сборку, тестирование, ... Все одной командой.
Ну да ansible тоже это может. Но я так же оценил и время на изучение. Мне потреболалось 6 часов что бы написать свое первое расписание. Последующие уже по часу. Теперь одна команда, и сайт в полете ))
Sergey Romanov: хз, как по мне в ансибле разобраться проще. Простенький плэйбук по документации можно наваять очень быстро. Так же есть готовые роли и в итоге все сводится к ansible-galaxy install и настройке переменных и инвентори файлов.
Так же встроенные средства которые решают проблему, озвученную автором. Все доступы и прочее лежат в репозитории в зашифрованном виде.
В репозитории кладётся db.conf.dist
Далее на выбор:
при установке требование создать свою конфигурацию db.conf на основе эталонной
Или двухуровневый конфиг - сначала смотрим в db.conf, если там искомой опции нет или файла не существует - берём эталонную из *.dist.
ни знаю на чем проект так что посоветую но может не подойти.
На свои nodejs проеты, я настраиваю переменные окружения ENV на сервере и локально. И ими пользуюс через process.ENV. Не уверен но кажется можно что то подобное для PHP замутить. Но я этого не знаю. Просто верю что должно быть хоть что то.
Для php-cli сойдет, а для fpm/apache думаю нужно прописывать где-то отдельно. Это я у вас поинтересоваться хотел, как вы настраиваете переменные окружения для ноды.
anatoly60: я так же использую в PHP проекты переменные окружения для подобных вещей. Выходит намного более удобно + есть возможность вармапить кеш еще до выкатки на сервер... хотя тут уже зависит от задач.