0

別のPCグループで別のコマンドを実行したい。次のような私のファブリックファイル:

env.hosts = ['125.221.225.31','125.221.225.36','125.221.225.33','125.221.225.34','125.221.225.35']
env.roledefs = {
    'master':['125.221.225.31'],
    'slave':['125.221.225.33','125.221.225.34','125.221.225.35','125.221.225.36']}

@roles('master')
def get_last_hosts():
    with cd('/etc'):
        get('hosts','/tmp/hosts')

@roles('slave')
def upload_hosts():
    with lcd('/tmp'):
        put('hosts','/etc/hosts',use_sudo=True)

def update_hosts():
    get_last_hosts()
    upload_hosts()

走れる:

fab get_last_hosts,

次に実行します:

fab upload_hosts 

これらのステップを1つのステップにマージしたいので、次のように言います。

update_hosts

update_hostsしかし、それは機能しません。env.hosts内のすべてのPCで実行されます。これは、私が望んでいることではありません。

4

1 に答える 1

1

これは、 executeコマンドを使用して回避できます。このようなもので:

def update_hosts():
    execute(get_last_hosts)
    execute(upload_hosts)
于 2013-01-27T17:10:52.073 に答える