Python Fabric - 未找到主机

Python Fabric - No hosts found

我不知道我做错了什么。这似乎是一件应该起作用的简单事情。我可以 运行 任务 "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()  

装饰器仅在您从 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 函数不同于结构任务。结构任务在幕后做一些事情,比如设置主机列表、用户,如果你调用 python 函数,这个状态就会保持。