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 函数,这个状态就会保持。
我不知道我做错了什么。这似乎是一件应该起作用的简单事情。我可以 运行 任务 "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 函数,这个状态就会保持。