Fabric 是 Python 寫成的 SSH 自動化部署工具,將重複的部署流程固化為腳本,支援多機器並行操作。
pip install fabric
# fabfile.py
def hello():
print("Hello world!")
# 執行:fab hello
def hello(name, value):
print("%s = %s!" % (name, value))
# fab hello:name=age,value=20
from fabric.api import local
def lsfab():
local('cd ~/tmp/fab && ls')
from fabric.api import env, cd, run
env.hosts = ['user@host:port']
env.password = 'pwd'
def update_setting_remote():
with cd('~/temp'):
run('ls -l | wc -l')
env.roledefs = {
'testserver': ['user1@host1:port1'],
'realserver': ['user2@host2:port2']
}
@roles('testserver')
def task1(): run('ls -l | wc -l')
@roles('realserver')
def task2(): run('ls ~/temp/ | wc -l')
def dotask():
execute(task1)
execute(task2)
from fabric.colors import green, red, yellow
print(green('success')); print(red('fail'))
env.hosts = ['host1', 'host2']
env.passwords = {
'host1': 'pwd1',
'host2': 'pwd2'
}
# 或配合 roledefs
env.roledefs = {...}
env.passwords = {'host1': '...', 'host2': '...', 'host3': '...'}