如何针对fabric中的主机列表运行任务

时间:2014-02-21 09:33:53

标签: python fabric

我使用的是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但没有成功。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在这种情况下,您需要每次在get_etc_binaries任务之前调用任务设置env变量。您可能还将local_path设为env.local_path,因此它更容易共享。

这样的调用看起来像:fab vmm_twomgmt get_etc_binaries vmm_two_a get_etc_binaries