Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用fabric在不同的组中运行自动化任务_Python_Fabric - Fatal编程技术网

Python 如何使用fabric在不同的组中运行自动化任务

Python 如何使用fabric在不同的组中运行自动化任务,python,fabric,Python,Fabric,我想在不同的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.2

我想在不同的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 
我想将这些步骤合并为一个步骤,也就是说:

更新主机


但这不起作用,它将在env.hosts中的每台pc上运行
update\u hosts
,这不是我想要的。

您可以通过使用命令来解决这个问题。在这样的情况下:

def update_hosts():
    execute(get_last_hosts)
    execute(upload_hosts)