Получить идентификатор env.host в Fabric2 - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь перенести свой код из Fabric 1.x в Fabric2.

В старой версии Fabric я использовал env.host в качестве идентификатора для каждой машины:
party_id = env.hosts.index(env.host)

Как я могу сделать это в Fabric2?

=========== ОБНОВЛЕНИЕ ========== *

Iсоздаю мои хосты, используя этот фрагмент кода:

host_list = open('public_ips', 'r').read().splitlines()
        self.connections = []
        self.pool = Group()
        for host in host_list:
            self.pool.append(Connection(host, user='user', connect_kwargs={
                'key_filename': ['mykey.pem']
            }))

Во время выполнения мне нужно знать, каков индекс каждого Connection объекта в ThreadingPool объекте.

1 Ответ

0 голосов
/ 05 марта 2019

env.host не работает с Fabric2, я столкнулся с точно такой же проблемой, когда обнаружил Connection объект с Fabric2.С помощью Fabric2 вы можете получить доступ к хосту с помощью объекта connection.

Вот пример кода

>>> import fabric
>>> res = fabric.ThreadingGroup('test1', 'test2').run('uptime')
 04:14:04 up 1 day, 16:20,  0 users,  load average: 0.00, 0.00, 0.00
 04:14:05 up 2 days,  1:55,  0 users,  load average: 0.00, 0.00, 0.00
>>> res
{<Connection host=test1>: <Result cmd='uptime' exited=0>, <Connection host=test2>: <Result cmd='uptime' exited=0>}
>>> for i in res:
...     print(i.host)
... 
test1
test2

Здесь приведена ссылка для получения информации о Соединение Fabric2

...