fabric将参数传递给roledef

时间:2013-03-15 16:45:05

标签: python fabric

我知道使用fabric,你可以将参数传递给Fabric任务,如:

def task(something=''):
    print "You said %s" % something

fab task:something='hello'

如果我想将一些参数传递给roledef该怎么办?这是我的例子:

env.roledefs = {
    'node1':          ['node1.%s' % DOMAIN],
    'node2':          ['node2.%s' % DOMAIN]
}

无论如何,我可以通过运行类似的方式传入DOMAIN:

fab task -argument='mydomain.com' (pseudo code)

1 个答案:

答案 0 :(得分:3)

您可以通过--set cmd选项设置自定义env变量:

fabric task --set domain='mydomain.com'

然后在fabfile中,只需阅读env.domain

env.roledefs = {
    'node1':          ['node1.%s' % env.domain],
    'node2':          ['node2.%s' % env.domain]
}

希望对你有所帮助。