我使用的是Python 2.6 / Fabric 1.8.0,我有几个主机包含不同的本地路径和变量。
import
....
def vmm_two_a():
env.hosts = 'xxx.xx.xx.xx'
env.user = 'tom'
env.password = password_from_netrc(env.hosts,env.user)
global local_path
local_path = '/home/vmm_two_a/binaries'
def vmm_two_mgmt():
env.hosts = 'xxx.xx.xx.xx'
env.user = 'john'
env.password = password_from_netrc(env.hosts,env.user)
global local_path
local_path = '/home/vmm_two_mgmt/binaries'
def get_etc_binaries():
''' Get all etc binaries deployed '''
with hide('stderr','stdout','output','running', 'warnings'):
settings(warn_only=True)
get('/usr/local/etc', local_path)
如何针对所有主机运行此任务?我试过fab -H但没有成功。
感谢您的帮助
答案 0 :(得分:0)
在这种情况下,您需要每次在get_etc_binaries任务之前调用任务设置env变量。您可能还将local_path设为env.local_path,因此它更容易共享。
这样的调用看起来像:fab vmm_twomgmt get_etc_binaries vmm_two_a get_etc_binaries