Python Fabric - 找不到主机

时间:2015-09-24 16:39:05

标签: python fabric

我不知道我做错了什么。这似乎是一件应该有效的简单事情。我可以自己运行任务“test_task”并且它可以工作。如果我将它作为“deploy_test”函数的一部分运行,那么它会提示我: 找不到主机。请指定(单个)主机字符串以进行连接:

env.roledefs = {
    'test_servers': ['testserver1.domain.com', 'testserver2.domain.com']
}

@roles("test_servers")
def test_task():
    env.user = "test_user"
    sudo("sh /usr/bin/something", user="other_user")

def deploy_test():
    test_task()  

1 个答案:

答案 0 :(得分:3)

只有从fab命令执行任务时,装饰器才有效:

fab test_task

如果您想使用任务deploy_test,您有很多选择:

1.-执行test_task作为任务,而不是作为功能。如果您要在其他主机列表上的deploy_test()上执行其他任务,则可以使用此方法:

def deploy_test():
   execute(test_task)  

2.-将角色装饰器放在deploy_test()

@roles("test_servers")
def deploy_test():
   test_task()

请记住,python函数与fabric任务不同。一个结构任务做一些事情,比如设置主机列表,用户,如果你调用python函数,这个状态就会保留。