在与模式匹配的主机上执行任务

时间:2013-09-19 08:08:30

标签: deployment fabric glob

我们将这种模式用于我们的主机(和linux用户):

coreapp_customer_stageID@server

我想在符合模式的主机列表上运行结构命令。

示例:我想在客户“c1”的核心应用“foocms”的所有主机上运行“date”。

我可以使用角色,但是有很多客户......全局匹配方式会很好。

1 个答案:

答案 0 :(得分:0)

你可以用这个

@task
def set_hosts(lookup_param):
    '''
    '''
    hosts=get_all_systems() # that needs to be implemented by you.
    regex=re.compile('^%s' % lookup_param.replace('*', '.*'))
    sub_hosts=[host for host in hosts if regex.match(host)]
    if not sub_hosts:
        raise ValueError('No host matches %s. Available: %s' % (lookup_param, hosts))
    env.hosts = sub_hosts

@task
def date():
    run('date')

示例:fab set_hosts:coreapp_customer1_* date

取自:http://docs.fabfile.org/en/1.7/usage/execution.html#the-alternate-approach