我想让一个任务根据我当前所在的网络使用一组不同的主机(角色)。如果我在我的服务器的同一个网络中,我不需要通过网关。
这是我的 fabfile.py 中的一个片段:
env.use_ssh_config = True
env.roledefs = {
'rack_machines': ['rack4', 'rack5', 'rack6', 'rack7'],
'external_rack_machines': ['erack4', 'erack5', 'erack6', 'erack7']
}
@roles('rack_machines')
def host_type():
run('uname -s')
因此,对于我的任务host_type()
,我希望它的角色是,rack_machines
如果我与 , 等在同一个网络中rack4
。rack5
否则,我希望它的角色是external_rack_machines
,因此通过网关访问这些相同的机器。
也许有一种方法可以单独使用 ssh 配置。ssh_config
这也是我的文件的一个片段:
Host erack4
HostName company-gw.foo.bar.com
Port 2261
User my_user
Host rack4
HostName 10.43.21.61
Port 22
User my_user