2012-07-22 2 views
7

Warum:Stoff env.hosts und in der gleichen Methode ausgeführt => Seite nicht gefunden Gastgeber

from fabric.api import env, run 

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

funktioniert nicht, wenn ich fab update, während:

from fabric.api import env, run 

env.hosts = ['apycat'] 

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

tut?

Fanden in den Dokumenten nichts darüber.

+0

Sehr ähnliche Frage: http://stackoverflow.com/questions/2326797/how-to-set-Ziel-Hosts-in-Fabric-Datei; Diese Antwort auf diese Frage bezieht sich auf Ihre spezifischen Anliegen: http://stackoverflow.com/a/5465497/16363 – Mark

Antwort

7

Die Angabe der Hostliste nach dem fab-Befehl hat bereits dazu geführt, dass die Hostliste für die Fab-Task nicht funktioniert. Also für das erste Beispiel haben Sie die Update-Aufgabe nicht eine Host-Liste gesetzt, um dann die folgende run() zu ermöglichen, über zu arbeiten. Ein guter Abschnitt in der Dokumentation für diese is here.

Aber es wird auch darauf hingewiesen, dass Sie einen Anwendungsfall wie der erste in einer von zwei Möglichkeiten arbeiten können. Zuerst mit den Einstellungen zu sein() Kontextmanager:

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

Die andere mit der neueren api Funktion execute() zu sein:

def bar(): 
    run(...) 

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