16

如何获得未找到主机。请指定(单个)主机字符串进行连接:?

如何解决面料问题?

def bootstrap():
    host = 'ec2-54-xxx.xxx.xxx.compute-1.amazonaws.com'
    env.hosts = [host]
    env.user = "ubuntu"
    env.key_filename = "/home/ubuntu/omg.pem"

> command run
>> fab bootstrap
> No hosts found. Please specify (single) host string for connection: 
4

3 回答 3

25

您也可以使用 env.host_string 代替 env.hosts:

def bootstrap():
    env.host_string # 'ec2-54-xxx.xxx.xxx.compute-1.amazonaws.com'
    env.user = "ubuntu"
    env.key_filename = "/home/ubuntu/omg.pem"
于 2014-06-08T15:28:06.223 回答
13

不要在任务中设置主机,而是在使用装饰器调用它之前执行它:

from fabric.api import hosts, env

@hosts(['ec2-54-xxx.xxx.xxx.compute-1.amazonaws.com'])
def bootstrap():
    env.user = "ubuntu"
    env.key_filename = "/home/ubuntu/omg.pem"

有关这方面的更多信息,请查看定义主机列表- 根据您的需要,有很多不同的方法可以做到这一点。

于 2013-03-25T18:08:25.363 回答
3

或者,您可以在函数之外设置环境设置

from fabric.api import env, run

host = 'ec2-54-xxx.xxx.xxx.compute-1.amazonaws.com'
env.hosts = [host]
env.user = "ubuntu"
env.key_filename = "/home/ubuntu/omg.pem"

def test():
    run('ls -la')
于 2014-09-15T08:55:22.407 回答