ansible执行playbook时间显示的python脚本
- import datetime
- import os
- import time
- from ansible.plugins.callback import CallbackBase
- class CallbackModule(CallbackBase):
- """
- A plugin for timing tasks
- """
- def __init__(self):
- super(CallbackModule, self).__init__()
- self.stats = {}
- self.current = None
- def playbook_on_task_start(self, name, is_conditional):
- """
- Logs the start of each task
- """
- if os.getenv("ANSIBLE_PROFILE_DISABLE") is not None:
- return
- if self.current is not None:
- # Record the running time of the last executed task
- self.stats[self.current] = time.time() - self.stats[self.current]
- # Record the start time of the current task
- self.current = name
- self.stats[self.current] = time.time()
- def playbook_on_stats(self, stats):
- """
- Prints the timings
- """
- if os.getenv("ANSIBLE_PROFILE_DISABLE") is not None:
- return
- # Record the timing of the very last task
- if self.current is not None:
- self.stats[self.current] = time.time() - self.stats[self.current]
- # Sort the tasks by their running time
- results = sorted(
- self.stats.items(),
- key=lambda value: value[1],
- reverse=True,
- )
- # Just keep the top 10
- results = results[:10]
- # Print the timings
- for name, elapsed in results:
- print(
- "{0:-<70}{1:->9}".format(
- '{0} '.format(name),
- ' {0:.02f}s'.format(elapsed),
- )
- )
- total_seconds = sum([x[1] for x in self.stats.items()])
- print("\nPlaybook finished: {0}, {1} total tasks. {2} elapsed. \n".format(
- time.asctime(),
- len(self.stats.items()),
- datetime.timedelta(seconds=(int(total_seconds)))
- )
- )
下面是把这个插件集成到ansible的方法:
- cd /etc/ansible
- mkdir callback_plugins
- cd callback_plugins
- wget https://raw.githubusercontent.com/jlafon/ansible-profile/master/callback_plugins/profile_tasks.py
- ###友提
- ansible2.0以上的版本需要在ansible.cfg中加入
- callback_whitelist = profile_tasks
运行结果如下:
ansible执行playbook时间显示的python脚本的更多相关文章
- ansible批量分发免密钥登陆python脚本
最近看了看强大的号称自动化运维的三大利器之一的--ansible,ok,亲测之后,确实感觉,对于我们这种DBA工作者来说,确实很受益. 值得注意的是ansible要求被管理服务器python版本不低于 ...
- 开启SQL Server执行占用时间显示和逻辑读取次数显示
两条命令 1:set statistics time on 这条命令会显示你编译这条语句和执行这条语句花多长时间 2.set statistics io on 这条命令会显示你逻辑读取了多少次数据库和 ...
- ansible执行带有环境变量的脚本不生效
1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...
- Android上执行python脚本-QPython
看书,发现android可以跑python. 尝试了一下. 首先需要在手机上安装python环境,通过安装apk实现,这个apk叫QPython,还有同类的比如SL4A. QPython的官网:htt ...
- Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
1.前提是:windows已经配置好Python的环境变量: 2.进入cmd命令行模式: **输入python命令,检测是否环境配置好:显示这样说明配置环境变量没问题 **用cd命令进入Python脚 ...
- C#调用python脚本
因项目需要,需要使用C#控制台程序执行python脚本,查询各种资料后可以成功调用了,记录一下,以备后面遗忘. 只尝试了两种调用方式,第一种只适用于python脚本中不包含第三方模块的情况,第二种针对 ...
- Linux使用crontab定时执行Python脚本清理日志
Linux中,周期执行的任务一般由crond这个守护进程来处理.cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.crond的配置文件称为"crontab", ...
- Jenkins自动执行python脚本输出测试报告
前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作. 借助Jenkins,我们可以结合 Git/SVN 自动拉取 ...
- 【原创】控制perl和python脚本执行过程中脚本文件是否关闭的方法
引子 跟踪perl和python脚本对文件的访问,实际过程中,perl和python解析器在解析完脚本后,直接关闭了 脚本文件,在进程中查询不到是访问文件的脚本文件名称. shell.perl和pyt ...
随机推荐
- 手把手windows64位配置安装python2.7
这几天公司要用到python的一些算法,让我调研一番,之前对Python一次没接触的我在安装配置环境的时候由于版本的问题,折腾了好久,这里简单介绍一下我的安装方法,需要安装pyhton的朋友可以不再向 ...
- ActiveMQ_点对点队列(二)
一.本文章包含的内容 1.列举了ActiveMQ中通过Queue方式发送.消费队列的代码(普通文本.json/xml字符串.对象数据) 2.spring+activemq方式 二.配置信息 1 ...
- Notes on 'Efficient Graph-Based Image Segmentation'
Notes on Efficient Graph-Based Image Segmentation 算法的目标 按照一种确定的标准, 将图片分割成细粒度的语义区域, 即Super pixel. 算法步 ...
- json-jsonConfig使用
一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...
- jQuery中data()方法用法实例
语法结构一: 复制代码代码如下: $(selector).data(name,value) 参数列表: 参数 描述 name 存储的数据名称. value 将要存储的任意数据. 实例代码: 复制代码代 ...
- wamp服务下部署禅道或其它项目时访问缓慢的解决办法
原因其实很简单: WAMP服务默认是不支持外网访问的,如果公司内外网在一起就会引起缓慢甚至超时的问题,直接修改WAPM的配置文件让它可以访问外网即可解决问题. 解决的方法/步骤 1.解决办法: ...
- Webpack打包工具实时更新操作(启用观察者模式)
可能存在这样的问题,每次修改完js/css文件之后,都要进行手动打包一下,浏览器上刷新一下. 那么我一般这样做: 1.安装Hbuilder,并启用边编辑边看的模式(其实这个是默认的). 2.启动Web ...
- 快递查询SDK
简介: 快递查询的SDK,使用的是快递100的智能查询,此SDK只是中间包装了一层而已,单对于普通的快递业务查询已经足够,也省去开发者研究的时间,拿来即用. 用途: 1.对接微信公众平台 2.对接需要 ...
- 认识http协议
http:Hyper Text Transfer Protocol,超文本传输协议.是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和 ...
- struts2 Advanced Learning
catalog . 引言 . struts2的类型转换 . struts2的输入校验 . struts2的拦截器机制 . 使用struts2的Ajax支持 . struts2 OGNL表达式 . st ...