我有一个应用程序配置文件,例如在Django中有一个settings.py文件。在该文件中是数据库连接设置,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'USER': 'db_user',
'PASSWORD': 'db_pass',
'HOST': 'localhost',
'PORT': '3306',
},
}
然后在特定于环境的group_vars文件中,我有一些变量存储了值,这些变量将替换部署角色任务期间settings.py文件中的值。
上述方案的最佳做法是什么?应该' db_name'就像' [DB_NAME_PLACEHOLDER]'然后Ansible用适当的group_vars文件中的指定变量替换它?
更新
我使用的方法是将settings.py转换为jinja2模板,现在在部署角色的templates目录中有一个settings.py.j2文件。然后我在部署角色中创建了一个任务,使用模板模块将文件放在正确的位置。
我还从我的django代码库中删除了settings.py,因为它现在是在一个ansible部署游戏中编写的。我必须编辑我的.gitignore以忽略对settings.py文件的更改。这似乎是一个黑客的解决方法。也许将settings.py置于django源之外,然后修改DJANGO_SETTINGS_MODULE环境变量?