如何在每个任务的Fabric中隔离env.hosts的用户输入

时间:2013-10-31 05:00:32

标签: python python-2.7 fabric

我在Fabric脚本中有一些任务。我试图弄清楚如何允许将env.hosts或@hosts装饰器的设置与给定任务隔离。我希望在我的fab文件中有一些任务可以预设主机,而我可以提供一个可以被解析为其他人的主机元组的文件。我还希望在运行时确定该文件。

我有这个:

def host_list():
    host_file = raw_input("enter the file containing the list of hosts: ")
    host_list = open(host_file, 'r')
    host_list = host_list.read().strip('\n')
    host_list = host_list.split(',')

    return host_list

我有一个任务:

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

当我将host_list函数分成命令时,我可以正确设置env.hosts,但我还有其他任务,我不想让fabric提示设置env.hosts。我尝试在任务函数中添加步骤,但每次迭代都会出现提示。我尝试用host_list函数提供#hosts装饰器,但它给了我一个关于函数对象不可迭代的错误。有没有办法将host_list函数隔离到某些任务?

1 个答案:

答案 0 :(得分:0)

这个答案在堆栈溢出中有很多问题。但是为了给你一个想法,你可以将文件作为参数发送到host_list(),然后读取它,并传递它的结果以用于execute()