如下所示(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

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
添加回答
舉報
0/150
提交
取消