Получить текущее значение списка env.hosts с Python Fabric Library - PullRequest
26 голосов
/ 26 июля 2010

У меня есть этот код (foo и bar - локальные серверы):

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

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

Который, конечно, печатает foo каждую итерацию.

Как вы, наверное, знаете, Fabric перебирает список env.hosts и выполняет mytask () для каждого из них следующим образом:

fab mytask

делает

task выполнено foo
task исполнено bar

Я ищу способ получить текущий хост в каждой итерации.

Спасибо

Ответы [ 3 ]

40 голосов
/ 26 июля 2010

Используйте env.host_string. Вы можете найти полный список env переменных здесь .

27 голосов
/ 26 июля 2010

Вы можете просто сделать:

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

def mytask():
     print(env.host)

Потому что, когда вы выполняете задачу, выполняемую fab, у вас будет бесплатный набор переменных.

3 голосов
/ 26 июля 2010

Спасибо Марсело.

Если вы действительно хотите использовать env.host_string (например, для целей конкатенации), убедитесь, что находитесь внутри задачи. Его значение None снаружи.

...