Python
Fabric 如何定義復雜的 env.hosts
我正在為我的部署工具開發 Fabric,並將命令分發到多個主機上。但我不知道如何在我的 fabfile.py 中定義一個複雜的主機
例如:我有 4 台伺服器。伺服器A,伺服器B,伺服器C,伺服器D
def prod(): env.hosts = ["serverA', "serverB" ] def dev(): env.hosts = ["serverC' "serverD"] def all(): prod() dev()
我是否可以在所有主機上執行命令而無需再次定義?
EX: fab all {command}
您可以查看為您的環境定義角色。
from fabric.api import env, run from fabric.decorators import task env.roledefs = { 'prod': ['ServerA', 'ServerB'], 'dev': ['ServerC', 'ServerD'], 'envC': ['ServerE', 'ServerF'] } env.roledefs['all'] = [h for r in env.roledefs.values() for h in r] @task def hostname(): run('hostname -f')
這意味著您現在必須像這樣發出您的結構呼叫:
fab -R prod hostname fab -R dev hostname fab -R all hostname fab -R dev,envC hostname