2013-03-25 28 views
14

Làm cách nào để không tìm thấy máy chủ nào. Vui lòng chỉ định (một) chuỗi máy chủ để kết nối:?Vải Python - Không tìm thấy máy chủ nào. Vui lòng chỉ định (một) chuỗi máy chủ để kết nối:

Làm thế nào để giải quyết bằng vải?

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" 

fab boostrap 
No hosts found. Please specify (single) host string for connection: 

Trả lời

11

Thay vì đặt các máy trong công việc của bạn, làm điều đó trước khi nó được gọi với một trang trí:

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" 

Để biết thêm thông tin về vấn đề này, hãy kiểm tra Defining host lists - có rất nhiều cách khác nhau để làm điều đó tùy thuộc vào những gì bạn cần.

+0

Cảm ơn cho giải pháp này. Tôi đã có một vấn đề mà tôi cần phải xác định loại khác nhau của máy chủ để một chức năng khác nhau. Với giải pháp này tôi đã có thể khắc phục vấn đề của mình. –

20

Ngoài ra bạn có thể sử dụng env.host_string thay vì 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" 
+0

Cảm ơn !, Tôi cũng cần 'env.disable_known_hosts = True' – Montaro

1

Alternatevly bạn có thể đặt thiết lập env ở bên ngoài chức năng của bạn

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') 
Các vấn đề liên quan