C'est un mémo, donc c'est difficile. J'ai pu faire quelque chose comme ça
Je développe plusieurs applications Django et les déploie à l'aide de Fabric et Cuisine. Il y a des variables qui diffèrent en fonction de la description et de l'environnement (développement, mise en scène, production) dans settings.py que je ne veux pas mettre sur github, donc je veux les refléter du fichier local vers le fichier du serveur distant
project_root/settings/production.py
#Les éléments de réglage communs sont projetés dans tous les environnements_root/settings/common.Je l'ai en commun avec py.
from sample_app.settings.common import *
SECRET_KEY = '{{ secret_key }}'
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1']
DATABASES = {
'default': {
'ENGINE': '{{ databases.default.engine }}',
'NAME': '{{ databases.default.name }}',
'USER': '{{ databases.default.user }}',
'PASSWORD': '{{ databases.default.password }}',
'HOST': '{{ databases.default.host }}',
'PORT': {{ databases.default.port }},
}
}
La valeur est appropriée
secrets.yml
django:
settings:
production:
secret_key: ''
databases:
default:
engine: django.db.backends.mysql
name: sample_app
user: root
password: ''
host: 127.0.0.1
port: 3306
Plutôt que de télécharger, il est plus correct de dire que vous créez un fichier avec le contenu spécifié à distance.
from jinja2 import Environment, FileSystemLoader
from cuisine import file_write
secrets = yaml.load(file('secrets.yml'))
local_template_name = local_template_path.split('/')[-1]
local_template_dir = local_template_path.replace(local_template_name, '')
#Les 3 lignes suivantes constituent le traitement principal. Récupérez la chaîne qui incorpore la variable dans le modèle et créez un fichier la contenant sur le serveur distant.
jinja2_env = Environment(loader=FileSystemLoader(local_template_dir))
content = jinja2_env.get_template(local_template_name).render(secrets['django']['settings']['production'])
file_write(remote_path, content.encode('utf-8'))
https://gist.github.com/wrunk/1317933
Recommended Posts