2017-06-05 20 views
0

私はこのようになりファブリックコマンドを実行したいと思います:Fabricコマンドを特定のリモートホストに対して実行する方法は?

show_usersは次のように定義されるだろう
fab show_users:web01 

def show_users(webserver): 
    if webserver == 'web01': 
    DB_NAME = 'db01' 
    elif webserver == 'web02': 
    DB_NAME = 'db02' 
    elif webserver == 'web03': 
    DB_NAME = 'db03' 
    else: 
    print "Error: invalid webserver." 

    cmd = "psql -h {0} -U <role> -d <database> -c 'SELECT id, username FROM auth_user;'".format(DB_NAME) 
    run(cmd) 

私は、コマンドを実行すると、私はこのエラーを取得します:

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

私の/ etc/hostsファイルに定義されている 'web01'を入力すると、コマンドが機能します。これを行う正しい方法は何ですか?

答えて

0

私はこのSO questionに基づいてそれを考え出した:

# usage: fab show_users:[dev|stage|prod] 
def show_users(tier): 
    env.tier = tier 
    if env.tier=="dev": 
     env.host_string = 'web01' 
     DB_HOST = 'db01' 
    elif env.tier=="stage": 
     env.host_string = 'web02' 
     DB_HOST = 'db02' 
    elif env.tier=="prod": 
     env.host_string = 'web03' 
     DB_HOST = 'db03' 
    else: 
     print "Error: Tier %s is not a valid server tier name." % (tier) 
     exit(1) 

    cmd = "psql -h {0} -U {1} -d {2} -c 'SELECT id, username FROM auth_user;'".format(DB_HOST, env.me, env.db) 
    run(cmd)