将主机名作为parameter passing到Fabric任务

我试图把一个结构脚本放在一起,通过API创build一个虚拟实例,然后在该实例上运行puppet。 我有一个创build虚拟机的任务,还有一个可以“引导”虚拟机的任务。 但是,我很难将这些链接在一起,因为我不知道如何将第一个任务中生成的一些数据作为主机名传递给第二个任务。 例如

def createVM(): newhostname = local('/usr/bin/createVM') bootstrap(newhostname) def bootstrap(hostname): env.hosts = [hostname] run('puppet agent -t') 

这似乎不工作,我得到提示input主机名来运行结构脚本,如果我只是执行fab createVM

这样做的最好方法是什么?

你可以看看execute()函数。 您可以使用它来覆盖您运行任务的主机并传递额外的参数。

你可能需要一些东西

 def createVM(): newhostname = local('/usr/bin/createVM') execute(bootstrap, hosts=[newhostname]) def bootstrap(): run('puppet agent -t') 

你可能想把它设置在环境字典( env )上,例如:

 env.newhostname = local('/usr/bin/createVM') 

或者只是设置env.hosts

 env.hosts = [local('/usr/bin/createVM')] 

然后执行fab createVM bootstrap

你可以在这里看到更多的细节:

http://docs.fabfile.org/en/1.10/usage/env.html