python fabric 批量管理多台server的不同目录
迷茫
迷茫 2017-04-17 11:22:23
[Python讨论组]

如下所示(port是可以这么写的,目录不行),进入不同主机时自动进入到不同目录,执行xxx。对不同的server传入不同的路径,执行xxx。 谢谢!
env.hosts = [test@server1:path_to_dir_1, test@se rver2:path_to_dir_2 ,......]
def xxx():
pass

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
ringa_lee

fabric是可以对主机进行分组的,就像下边这个

from fabric import hosts,run
@hosts('host1', 'host2')
def mytask():
 run('ls /var/www')

或者这个

from fabric.api import run, roles

env.roledefs = {
    'db': ['db1', 'db2'],
    'web': ['web1', 'web2', 'web3'],
}

@roles('db')
def do():.
    pass

@roles('web')
def do():
    pass

看下官方文档,就都清楚了。

天蓬老师

在我之前的项目是以全局配置项的形式来实现的,为每个host定义自己的work_dir等变量

host_configs = {
    "ip1": {
        "work_dir": path1
    },
    "ip2": {
        "work_dir": path2
    },
}

然后在fabric的task方法中通过env['host']作为key,去host_configs中去读取相应的work_dir信息,并执行相应操作

@task
def some_task():
    with cd(host_configs[env['host']]['work_dir']):
        do_some_stuff
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号