Python3中详解fabfile的编写


Posted in Python onJune 24, 2018

fab命令好似结合我们编写的fabfile.py(其它文件名必须添加-f filename应用)来搭配使用的,部分命令行参数可以通过相应的方法来替代,使之更加灵活,例如"-H 192.168.56.133,192.168.56.134",我们可以通过定义env.hosts来实现,如"env.hosts=['192.168.56.133,192.168.56.134']"。fabfile的主体由多个自定义的任务函数组成,不同任务实现不同的操作逻辑。

全局属性设定

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

  • evn.host:定义目标主机,可以用IP或主机名表示,以Python的列表形式定义,如evn.hosts['192.168.56.133','192.168.56.134']。
  • env.exclude_hosts:排除指定主机,如env.exclude_hosts=['192.168.56.133']。
  • env.user:定义用户名,如env.user="root"。
  • env.port:定义目标主机端口,默认为22,如env.port="22"。
  • env.password:定义密码,如env.password='1234567'。
  • env.passwords:与password功能一样,区别在于不同主机不同密码的应用场景,需要注意的是,配置passwords是需配置用户、主机、端口等信息,如:
env.passwords = {
  'root@192.168.56.131:22':'1234567',
  'root@192.168.56.132:22':'1234567',
  'root@192.168.56.133:22':'1234567',
  'root@192.168.56.134:22':'1234567'
}
  • env.gateway:定义网关(中转、堡垒机)IP,如env.gateway = '192.168.56.1'。
  • env.deploy_release_dir:自定义全局变量,格式:env.+"变量名称",如env.deploy_release_dir、env.age、env.sex等。
  • env.roledefs:定义角色分组,比如web组与db组主机区分开来,定义如下:
env.roledefs = {
  'webservers':['192.168.56.131','192.168.56.132','192.168.56.133'],
  'dbserver':['192.168.56.134','192.168.56.135']
}

引用时使用Python修饰符的形式进行,角色修饰符下面的任务函数为其作用域,下面来看一个示例:

@roles('webservers')
def webtask():
  run('/etc/init.d/nginx start')


@roles('dbservers')
def dbtask():
  run('/etc/init.d/mysql start')


@roles('webservers','dbservers')
def pubclitasj():
  run('uptime')

def deploy():
  execute(webtask)
  execute(dbtask)
  execute(pubclitask)

在命令执行fab deploy就可以实现不同角色执行不同的任务函数了。

常用API

Fabric提供了一组简单但功能强大的fabric.api命令集,简单地调用这些API就能完成大部分应用场景需求。Fabric常用方法及说明如下:

  • local:执行本地命令,如:local('uname -s');
  • lcd:切换本地目录,如:lcd('/home');
  • cd:切换远程目录,如:cd('/data/logs');
  • run:执行远程命令,如:run('free -m');
  • sudo:sudo方式执行远程命令,如:sudo('/etc/init.d/httpd start');
  • put:上传本地文件到远程主机,如:put('/home/user.info','/data/user.info');
  • prompt:获得用户输入信息,如:prompt('please input user password:');
  • confirm:获得提示信息确认,如:confirm("Tests failed. Continue[Y/N]?");
  • reboot:重启远程主机,如:reboot();
  • @task:函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑;
  • runs_once:函数修复符,标识的函数只会执行一次,不受多台主机影响。
Python 相关文章推荐
Python基础语法(Python基础知识点)
Feb 28 Python
Python中表达式x += y和x = x+y 的区别详解
Jun 20 Python
python删除本地夹里重复文件的方法
Nov 19 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
Python Django 前后端分离 API的方法
Aug 28 Python
python计算n的阶乘的方法代码
Oct 25 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
python获取linux系统信息的三种方法
Oct 14 Python
python随机打印成绩排名表
Jun 23 Python
浅析Python OpenCV三种滤镜效果
Apr 11 Python
关于python写入文件自动换行的问题
Jun 23 #Python
利用Python读取txt文档的方法讲解
Jun 23 #Python
python读取一个目录下所有txt里面的内容方法
Jun 23 #Python
Python 读取某个目录下所有的文件实例
Jun 23 #Python
python保存数据到本地文件的方法
Jun 23 #Python
基于Python List的赋值方法
Jun 23 #Python
python统计多维数组的行数和列数实例
Jun 23 #Python
You might like
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
PHP实现的购物车类实例
2015/06/17 PHP
使用PHP编写发红包程序
2015/07/22 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
越南综合购物网站:Lazada越南
2019/06/10 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
电气自动化自荐信
2013/10/10 职场文书
团日活动总结书格式
2014/05/08 职场文书
留守儿童工作方案
2014/06/02 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
详细介绍python类及类的用法
2021/05/31 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers