为什么fabric报告“未找到主机”?

2 投票
2 回答
4300 浏览
提问于 2025-04-16 13:25
env.roledefs = {
    'seed': ['host1'],
    'peer': ['host2']
}

@roles('seed')
def test():
    pass

@roles('peer')
def test1():
    pass

def deploy():
    test()
    test1()

fab test,fab test1 - 都正常

fab deploy:

没有找到主机。请指定一个(单一的)主机字符串以便连接:

这是为什么呢?

2 个回答

1

因为没有设置 env.hosts。你的 test() 函数没有使用 run() 或其他需要通过 ssh 连接的命令,而 deploy() 函数可能是需要的。

先看看这些:

http://docs.fabfile.org/en/1.0.1/usage/env.html#hosts

http://docs.fabfile.org/en/1.0.1/usage/execution.html#hosts

4

在从 deploy 调用 testtest1 时,@roles 这个设置没有被考虑进去。你应该用 execute(test)execute(test1) 来调用这些函数。

另外,看看这些链接:

撰写回答