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

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

元芳怎么了
浏览 174回答 2
2回答

HUX布斯

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

aluckdog

在我之前的项目是以全局配置项的形式来实现的,为每个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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python