2016-11-14 4 views
0

У меня есть два сервера, которые мне нужно развернуть, но они имеют немного другую настройку. Приложение развертывается по другому пути на каждом сервере (/var/www/sites/my_site и /var/www/my_site).python fabric put with dynamic remote_path

Мой файл выглядит примерно так:

env.roledefs = { 
    'production': ['host1.foo.bar', 'host2.foo.bar'] 
} 

@task 
@roles(['production']) 
def deploy(): 
    files = getBundlePaths() 

    for file in files: 
     # How would I go about uploading to a different path per server? 
     put(file, ...) 

ответ

1

Может быть, вы можете установить еще одну переменную с путями и ключ выключения, что от текущего хоста вы находитесь. Что-то вроде этого

from fabric.api import * 

env.roledefs = { 
    'production': ['host1.foo.bar', 'host2.foo.bar'] 
} 

env.paths = { 
    'production': { 
     'host1.foo.bar': '/var/www/sites/my_site', 
     'host2.foo.bar': '/var/www/my_site' 
    } 
} 

@task 
@roles(['production']) 
def deploy(): 
    files = getBundlePaths() 

    path = env.paths[env.effective_roles[0]][env.host] 
    print(path) 

    for file in files: 
     put(file, path)