Мне нравится обновлять локальную базу данных на сервере db. поэтому я создал fabfile с 3 env. в моей задаче сначала я перехожу на сервер, делаю что-то там - тогда мне нравится переключаться, например. к местным и делать что-то там. как я могу изменить среду внутри задачи?Переключатель env внутри задачи
для других вещей я использовал его вот так: fab www task
, но тогда у меня есть только www env.
вот мой fabfile.py:
def www():
env.hosts = ['s7.wservices.ch']
env.user = 'beautyparlour'
env.dbname = 'db1'
env.dbuser = 'user1'
env.dbpass = 'password'
env.name_vitualenv = 'django15' #name of the virtualenv
env.name_folder = 'projektfoldername' # name of the project folder
def dev():
env.hosts = ['s7.wservices.ch']
env.user = 'beautyparlour'
env.dbname = 'db1'
env.dbuser = 'user1'
env.dbpass = 'password'
env.name_vitualenv = 'django15' #name of the virtualenv
env.name_folder = 'projektfoldername' # name of the project folder
def home():
env.hosts = ['localhost']
env.user = ''
env.dbname = 'dbx'
env.dbuser = 'Roland'
env.dbpass = ''
env.name_vitualenv = 'django15' #name of the virtualenv
env.name_folder = 'projektfoldername' # name of the project folder
def update_db():
'''
use this on your local maschine to get the db from the live system
fab update_db
1. create a backup on server
2. download the backup
3. unzip the packup media and sql
4. load the sql dump to database
'''
# switch env to server ??
www()
...do stuff on server
# switch env to local ??
home()
... do stuff local
спасибо, это выглядит хорошо для меня, но если я сделаю это так, как я могу установить, например. 'env.user',' env.dbname', 'env.name_folder', ... для каждой среды? – Roland
так же, как вы это делали раньше? вы также можете просто создать новую функцию 'load_env', которая сканирует, какую роль вы используете, а затем загружает пользователя, dbname и name_folder соответствующим образом. – Greg
На самом деле, вероятно, лучше использовать диспетчер контекстов 'settings'. Я обновил ответ, чтобы отразить это. – Greg