介绍
Fabric 是一个基于 Python 的开源工具库,主要用于简化远程服务器的自动化操作(如部署、管理、批量执行命令等)。它通过封装 SSH 协议,让开发者可以用 Python 代码定义 “任务”,并批量在多台远程服务器上执行,避免了手动登录服务器逐个操作的繁琐流程。
用代码替代 “手动 SSH 登录服务器 → 输入命令 → 等待结果” 的重复工作,尤其适合需要管理多台服务器的场景(如集群部署、批量配置等)。
特点
- 基于 SSH 协议
- 任务自动化
- 支持多服务器与角色分组
- 并行执行
- Python 生态集成
应用场景
- 批量部署应用:同时向多台 Web 服务器推送代码、安装依赖、重启服务。
- 服务器监控:批量查看多台服务器的 CPU、内存、磁盘使用率。
- 配置管理:统一在多台服务器上修改配置文件、创建用户、设置权限。
- 日志收集:从多台服务器拉取日志文件到本地汇总分析。
安装
pip install fabric
快速开始
编写任务文件 fabfile.py
-f 指定fab入口文件,默认入口文件名为 fabfile.py
from fabric import task
# 定义名为 hello 的任务
@task
def hello(c):
# 任务内容:可以是本地操作或远程服务器操作
print("Hello from Fabric!") # 本地打印
# 也可以执行远程命令(如果指定了服务器)
# c.run("echo 'Hello from remote server!'")
执行命令
fab hello
输出结果
Hello from Fabric!
常用参数
# fab --help 查看帮助
常用参数
-l 显示定义好的任务函数名
-f 指定fab入口文件,默认入口文件名为fabfile.py.. 即指定fabfile文件
-g 指定网关(中转)设备,即HOST逗号分隔要操作的主机, 比如堡垒机环境,填写堡垒机IP即可.
-H 指定目标主机,多台主机用‘,’号分隔
-p 远程账号的密码,fab执行时默认使用root账户
-P 以异步并行方式运行多主机任务,默认为串行运行
-R 指定role(角色),以角色名区分不同业务组设备
-t 设置设备连接超时时间(秒)
-T 设置远程主机命令执行超时时间(秒)
-w 当命令执行失败,发出警告,而非默认中止任务。
其他参数:
--set=KEY=VALUE,... 逗号分隔,设置环境变量
--shortlist 简短打印可用命令
-c PATH 指定本地配置文件
-D 不加载用户known_hosts文件
-i PATH 指定私钥文件
-k 不加载来自~/.ssh下的私钥文件
--port=PORT 指定SSH连接端口
-R ROLES 根据角色操作,逗号分隔
-s SHELL 指定新shell,默认是'/bin/bash -l -c'
--show=LEVELS 以逗号分隔的输出
--ssh-config-path=PATH SSH配置文件路径
-T N 设置远程命令超时时间,单位秒
-u USER 连接远程主机用户名
-x HOSTS 以逗号分隔排除主机
-z INT 并发进程数
总结
Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以通过 SSH 的方式与远程服务器进行自动化交互, 实现本地或远程shell命令,包括:命令执行、文件上传、下载及完整执行日志输出等功能。
相关链接