检索环境主机Fabric2中的id

2024-04-25 23:40:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将代码从Fabric 1.x移植到Fabric2。你知道吗

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

我怎样才能在Fabric2中做到这一点?你知道吗

=============更新===========

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

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']
            }))

在运行时,我需要知道ThreadingPool对象中每个Connection对象的索引是什么。你知道吗


Tags: 对象代码selfenv机器idhostparty
1条回答
网友
1楼 · 发布于 2024-04-25 23:40:08

env.host不适用于Fabric2,当我发现带有Fabric2Connection对象时,我遇到了完全相同的问题。使用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信息的链接

相关问题 更多 >