9.python 系统批量运维管理器之Fabric模块

前面介绍了paramiko,pexpect模块,今天来说比较适合大型应用自动化部署的模块,或者执行系统命令的模块Fabric。

Fabric 是一个 Python 的库,同时它也是一个命令行工具。它提供了丰富的同 SSH 交互的接口,可以用来在本地或远程机器上自动化、流水化地执行 Shell 命令。使用 fabric 提供的命令行工具,可以很方便地执行应用部署和系统管理等操作。因此它非常适合用来做应用的远程部署及系统维护。其上手也极其简单,你需要的只是懂得基本的 Shell 命令。

fabric 依赖于 paramiko 进行 ssh 交互,fabric 的设计思路是通过几个 API 接口来完成所有的部署,因此 fabric 对系统管理操作进行了简单的封装,比如执行命令,上传文件,并行操作和异常处理等。

paramiko 是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,fabric ansible 内部的远程管理就是使用的paramiko来现实

安装模块

Fabric的官网是 http://www.fabfile.org,源码托管在github上,可以把源码包clone到本地,使用 python3 setup.py  develop 安装。

我这里使用 pip install fabric3 安装,不过 fab 命令默认安装在python目录下,需要创建软连接:ln -s 默认安装路径  /usr/bin/fab  添加到环境变量即可

Fabric简介和各个版本差异比较:http://www.mamicode.com/info-detail-2337088.html

安装成功

扫描二维码关注公众号,回复: 5728286 查看本文章

fab常用参数

fab作为Fabric程序的命令行入口,提供了丰富的参数调用,命令的格式如下:

fab [options] <command>[:arg1,arg2-val2,host=foo,host='h1;h2'...]...

参数详解:

  • -l:显示定义好的任务函数名,
  • -f:指定fab入口文件,默认入口文件名为fabric.py,
  • -g:指定网关(中转)设备,比如堡垒机环境,填写堡垒机IP即可,
  • -H:指定目标主机,多台用 "," 分割,
  • -P:以异步并行的方式运行多主机任务,默认为串行运行,
  • -R:指定role(角色),以角色名区分不同业务组设备,
  • -t:设置设备连接超时时间,
  • -T:设置远程主机命令执行超时时间(秒),
  • -w:当命令执行失败,发出警告,而非默认中止任务。

有时候我们甚至不需要写代码就可以执行远程操作,直接使用命令行形式:

fab -p 12580(密码) -H 192.168.0.132 -- 'uname -a'

运行结果:

不少人反映命令执行总有paramiko的cryptography爆错

应为paramiko2.4.2依赖cryptography,而最新的cryptography==2.5里有一些弃用的API。

只需卸载cryptography的2.5版本,并且安装2.4.2即可

pip uninstall cryptography==2.5
pip install cryptography==2.4.2

fabfile的编写以及全局属性设定

fabfile的主体由多个自定义的任务函数组成,不同任务实现不同的操作逻辑。

env对象的作用是定义fabfile的全局设定,支持多个属性,包括目标主机,用户,密码,角色,各属性说明如下:

  • env.host:定义目标主机,可以用IP或者主机名表示

猜你喜欢

转载自www.cnblogs.com/bmjoker/p/10633407.html
今日推荐