Python Fabric作为库,执行和环境?

时间:2015-06-15 23:34:41

标签: python fabric

我已经很努力地找到了这个但没有运气 - 我确信我可能无法找到并为自己找到示例或弄清楚语法

  • 我想使用fabric作为库
  • 我想要2套主机
  • 我想为这些不同的主机集重用相同的功能(所以我们不能在所述功能上使用@roles装饰器)

所以我认为我需要:

from fabric.api import execute, run, env

NODES = ['192.168.56.141','192.168.56.152']
env.roledefs = {'head':['localhost'], 'nodes':NODES}
env.user('r4space')

def testfunc ():
    run('touch ./fred.txt')

execute(testfunc(),<somehow specific 'head' or 'nodes' as my hosts list and user >) 

我尝试了一系列语法// hosts = NODES,-H NODES,user ='r4space'....更多但我得到语法错误或“host_string = raw_input(”找不到主机请注明(单)“”

如果它有所不同,最终我的函数defs将在一个单独的文件中导入到main中,其中定义了hosts等,并调用execute。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误。

  • env.user('r4space')错了。应该是env.user = 'r4space'
  • 使用execute时,第一个参数应该是可调用的。您已使用函数testfunc的返回值。

我认为如果您修复最后一行,它将起作用:

execute(testfunc, hosts = NODES)