Fabric是一个python命令行工具,通过ssh来部署应用或者完成常规运维任务。我们在日常工作中经常会登录多台机器完成混合任务,很多时候这些任务都是重复的,让这些工作占据大脑和时间是不值得的。
利用Fabric能解放我们的这些时间,让我们的工作更有效率。
新手教程
安装Fabric : pip install fabric
生成一个fabfile.py,这是我们的主文件。
场景1. 我们启动了几台虚拟机,我们希望加入一些常用工具,做一些初始化工作。
1
2
3
4
5
6
7
8
|
fromfabric.apiimportrun, env, roles
env.hosts=['root
@localhost ','root@192.168.10.11']
defdo_init():
run('sudo apt-get install -y git vim iotop')
run('git config --global alias.co checkout')
run('git config --global alias.br branch')
run('git config --global alias.ci commit')
run('git config --global --list')
|
在项目目录下 fab do_init
这时候就在这两台机器上做好修改了,在机器很多的情况下非常好用。
场景2. 因为有些原因我们有一个手动任务,需要在不同的机器上执行命令并且查看结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
fromfabric.apiimportrun, env, roles
@hosts(“root@aaa.bbb.ccc”)
defbuild_rpm()
run(“update_rpmall”)
@hosts(“root@bbb.ccc.ddd”)
defgenerate_iso()
run(“generate iso”)
defdeploy_iso()
build_rpm()
generate_iso()
|
基本概念解释
1. env:fabric中的全局设置,设置hosts,role以及执行策略。
2. hosts:主机列表,命令会默认在这些主机上执行,给函数加上hosts装饰参数时可以限制某一个任务在哪些机器上执行。
3. fabfile:用来被fabric加载的入口程序
官方文档
http://docs.fabfile.org/en/1.8/
总结
fabric 是一个适用于平时运维工作的工具,可以把与时间无关的重复性工作写成程序,将平时的很多工作都自动化。
fabric与puppet相比更适合做一些临时的任务性质的操作,而puppet比较适合做状态的收敛类的操作。