将主机名作为参数传递给 Fabric 任务

gro*_*wse 5 puppet fabric

我正在尝试组合一个结构脚本,该脚本通过 API 创建一个虚拟实例,然后在该实例上运行 puppet。我有一个创建 VM 的任务,以及一个可以“引导”VM 的任务。但是,我很难将这些链接在一起,因为我不确定如何将第一个任务中生成的一些数据作为主机名传递到第二个任务中。例如

def createVM():
    newhostname = local('/usr/bin/createVM')
    bootstrap(newhostname)

def bootstrap(hostname):
    env.hosts = [hostname]
    run('puppet agent -t')
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,如果我只是执行fab createVM.

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

use*_*776 3

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

你可能需要类似的东西

def createVM():
    newhostname = local('/usr/bin/createVM')
    execute(bootstrap, hosts=[newhostname])

def bootstrap():
    run('puppet agent -t')
Run Code Online (Sandbox Code Playgroud)