检索Fabric2中的env.host id

问题描述 投票:0回答:1

我正在尝试将我的代码从Fabric 1.x移植到Fabric2。

在旧版本的Fabric中,我使用env.host作为每台机器的id: party_id = env.hosts.index(env.host)

我怎样才能在Fabric2中做到这一点?

=========== =========== UPDATE

我正在使用此代码段创建主机:

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对象的索引是什么。

python fabric
1个回答
0
投票

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 Connection的信息的链接

© www.soinside.com 2019 - 2024. All rights reserved.