2013-03-25 4 views

Odpowiedz

11

Zamiast ustawiać hosty wewnątrz zadania, zrób to zanim zostanie wywołana z dekoratora:

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" 

Aby uzyskać więcej informacji na ten temat, sprawdź Defining host lists - istnieje wiele różnych sposobów rób to w zależności od tego, czego potrzebujesz.

+0

Dzięki za tym rozwiązaniem. Wystąpił problem, w którym muszę zdefiniować inny typ hostów dla innej funkcji. Dzięki temu rozwiązaniu udało mi się rozwiązać mój problem. –

20

Również można użyć env.host_string zamiast 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

Dzięki !, potrzebowałem również 'env.disable_known_hosts = True' – Montaro

1

Alternatevly można skonfigurować ustawień w env poza swoimi funkcjami

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')