2010-07-26 4 views
24

Tengo este código (foo y bar son servidores locales):Obtener el valor actual de la lista env.hosts con Python Tela Biblioteca

env.hosts = ['foo', 'bar'] 

def mytask(): 
    print(env.hosts[0]) 

Lo cual, de impresiones del curso foo cada iteración.

Como usted probablemente sabe, itera tela a través de la lista env.hosts y ejecuta MyTask() en cada uno de ellos de esta manera:

fab mytask 

hace

task se ejecuta en foo
task es ejecutado en bar

Estoy buscando una manera de obtener el host actual en cada iteración.

Gracias,

Respuesta

38

Use env.host_string. Puede encontrar una lista completa de env variables here.

+0

Tenga en cuenta que host_sting tendrá información de conexión adicional, si se utiliza, del nombre de usuario y el puerto, en lugar del nombre de host simple. – Morgan

3

Gracias Marcelo.

Si realmente quiere usar env.host_string (para fines de concatenación, por ejemplo), asegúrese de estar dentro de una tarea. Su valor es None afuera.

26

sólo se puede hacer:

env.hosts = ['foo', 'bar'] 

def mytask(): 
    print(env.host) 

Porque cuando estás en la tarea como ejecutado por Fab, tendrá ese conjunto var de forma gratuita.

Cuestiones relacionadas