2012-07-22 6 views
7

Dlaczego:Fabric env.hosts i uruchomić w tym samym sposobem => Nie znaleziono gospodarze

from fabric.api import env, run 

def update(): 
    env.hosts = ['apycat'] 
    run('cd /var/www/menu; svn up') 

nie działa kiedy fab update, przy czym:

from fabric.api import env, run 

env.hosts = ['apycat'] 

def update(): 
    run('cd /var/www/menu; svn up') 

robi?

Nie znaleziono niczego na ten temat w dokumentach.

+0

Bardzo podobne pytanie: http://stackoverflow.com/questions/2326797/how-to-set-target-hosts-in-fabric-file; ta odpowiedź na to pytanie dotyczy twoich szczególnych obaw: http://stackoverflow.com/a/5465497/16363 – Mark

Odpowiedz

7

Określenie listy hostów po tym, jak polecenie fab już utworzyło listę hostów dla zadania fab, nie będzie działać. Tak więc dla pierwszego przykładu zadanie aktualizacji nie ma zestawu zestawów hostów, aby następnie umożliwić następujące działanie run(). Dobra sekcja w dokumentach dla tego is here.

Należy jednak zauważyć, że można uzyskać przypadek użycia, taki jak pierwszy, który działa na dwa sposoby. Pierwszy mecz z ustawieniami() kierownik kontekst:

def foo(): 
    with settings(host_string='apycat'): 
     run(...) 

Drugi mecz z nowszych funkcji API execute():

def bar(): 
    run(...) 

def foo(): 
    execute(bar, hosts=['apycat'])