2013-03-25 18 views

risposta

11

Invece di impostare gli host all'interno del vostro compito, farlo prima che venga chiamato con un decoratore:

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" 

Per ulteriori informazioni su questo, controlla Defining host lists - ci sono un sacco di modi diversi per fallo a seconda di ciò che ti serve.

+0

Grazie per questa soluzione. Stavo avendo un problema in cui ho bisogno di definire diversi tipi di host per una funzione diversa. Con questa soluzione sono stato in grado di risolvere il mio problema. –

20

Inoltre è possibile utilizzare env.host_string invece di 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

Grazie! Ho anche bisogno di 'env.disable_known_hosts = True' – Montaro

1

Alternatevly è possibile configurare le impostazioni env in fuori le funzioni

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