为了账号安全,请及时绑定邮箱和手机立即绑定

该如何亲批量管理多台server的不同目录?

该如何亲批量管理多台server的不同目录?

元芳怎么了 2023-05-01 17:13:30
如下所示(port是可以这么写的,目录不行),进入不同主机时自动进入到不同目录,执行xxx。对不同的server传入不同的路径,执行xxx。 谢谢!env.hosts = [test@server1:path_to_dir_1, test@se rver2:path_to_dir_2 ,......]def xxx():pass
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

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


查看完整回答
反对 回复 2023-05-04
?
aluckdog

TA贡献1847条经验 获得超7个赞

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

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

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

@taskdef some_task():
    with cd(host_configs[env['host']]['work_dir']):
        do_some_stuff
查看完整回答
反对 回复 2023-05-04
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号