У меня есть простое приложение Django, которое должно использовать базу данных MySQL. Существует файл settings.py
который содержит простой словарь Python, в который я должен ввести учетные данные MySQL, он выглядит так:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'django',
'PASSWORD': 'django',
'HOST': 'localhost',
}
}
На сервере (Debian) я использую извлечение последней git-версии моего приложения. В этом git-репо у меня есть ветвь production
которая содержит учетные данные базы данных, которые я выбрал для этого сервера.
Теперь я хотел бы полностью автоматизировать развертывание. В настоящее время я использую Ansible, чтобы сделать
git checkout production
git pull origin master
service apache2 restart
который работает. Проблема в том, что это исправление базы данных находится только на сервере. Я бы предпочел иметь этот патч централизованно.
Я думал, что смогу позволить Ansible развернуть версию vanilla, а затем использовать Ansible для обмена строк
PASSWORD
. Недостатком является то, что при следующем запуске Ansible обнаружит, что проверка была изменена, и переделает все, что делает его неэффективным.Затем я подумал о пакете Debian для всего этого. Для этого потребуется либо вставить учетные данные в пакет, что я не могу сделать, так как пакет будет общедоступным (для использования Launchpad PPA).
В любом случае, мне, вероятно, нужно иметь учетные данные в каком-то месте, где это обнаружит развертывание vanilla, например /etc/myapp/db.ini
.
Каков разумный способ сделать это?