2012-07-22 9 views
7

qué:env.hosts tela y se ejecutan en el mismo método => No se encontraron anfitriones

from fabric.api import env, run 

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

no funciona cuando fab update, mientras que:

from fabric.api import env, run 

env.hosts = ['apycat'] 

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

hace?

No encontré nada al respecto en los documentos.

+0

pregunta muy similar: http://stackoverflow.com/questions/2326797/how-to-set-target-hosts-in-fabric-file; esta respuesta a esa pregunta aborda sus preocupaciones específicas: http://stackoverflow.com/a/5465497/16363 – Mark

Respuesta

7

La especificación de la lista de hosts después de que el comando fab ya haya realizado la lista de hosts para la tarea fab no funcionará. Por lo tanto, para el primer ejemplo que tiene la tarea de actualización no tiene un conjunto de lista de host, para luego permitir que la siguiente ejecución() funcione. Una buena sección en los documentos para este is here.

Pero también shuold señalar que puede obtener un caso de uso como la primera para trabajar en una de dos vías. En primer lugar estar con la configuración() gestor de contexto:

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

El otro es con la función API más reciente ejecutar():

def bar(): 
    run(...) 

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