python将ansible配置转为json格式实例代码


Posted in Python onMay 15, 2017

python将ansible配置转为json格式实例代码

ansible的配置文件举例如下,这种配置文件不利于在前端的展现,因此,我们用一段简单的代码将ansible的配置文件转为json格式的:

[webserver]
192.168.204.70
192.168.204.71

[dbserver]
192.168.204.72
192.168.204.73
192.168.204.75

[proxy]
192.168.204.76
192.168.204.77
192.168.204.78

[test]
192.168.204.79
192.168.204.80

[haproxy]
192.168.205.82
192.168.204.83

用python将ansible配置转为json格式,python代码如下:

import ConfigParser
import json
dict_result = {}
cf = ConfigParser.ConfigParser(allow_no_value=True)
cf.read('/etc/ansible/hosts.test')
secs = cf.sections()
for sec in secs:
 dict_result[sec] = cf.options(sec)
print json.dumps(dict_result)

 转换结果如下(python版本使用2.7版本的):

/usr/local/python/bin/python /tmp/test.py
{"test": ["192.168.204.79", "192.168.204.80"], "haproxy": ["192.168.205.82", "192.168.204.83"], "webserver": ["192.168.204.70", "192.168.204.71"], "proxy": ["192.168.204.76", "192.168.204.77", "192.168.204.78"], "dbserver": ["192.168.204.72", "192.168.204.73", "192.168.204.75"]}

 转换成json文件就方便在前端进行展示了,使用Flask提供json格式的接口如下:

#获取ansible分组
@app.route('/web_test/ansible')
def web_test_ansible():
  dict_result = {}
  cf = ConfigParser.ConfigParser(allow_no_value=True)
  cf.read('/etc/ansible/hosts.test')
  secs = cf.sections()
  for sec in secs:
    dict_result[sec] = cf.options(sec)
  return json.dumps(dict_result)

然后前端代码(使用bootstrap treeview)如下:

<script src="/static/js/bootstrap-treeview.js"></script>
  <script type="text/javascript">
    $(document).ready(function () {

      $('#btn-get-hostgroup').click(function () {
        getAllCheck = $('#hostgrouptree').treeview('getChecked');
        for (var i = 0; i < getAllCheck.length; i++) {
          console.log(getAllCheck[i].text);
        }
      });


      $.ajax({
        url: '/web_test/ansible',
        type: 'GET',
        success: function (data) {
          result = JSON.parse(data);
          nodes = [];
          for (var hostgroup in result) {
            var nodeshostgroup = [];
            hosts = result[hostgroup];
            for (var i = 0; i < hosts.length; i++) {
              nodeshostgroup.push({text: hosts[i], selectable:false});
            }
            nodes.push({text: hostgroup, nodes: nodeshostgroup, selectable:false});
          }
          $('#hostgrouptree').treeview({data: [{text: 'all', nodes: nodes, selectable:false}], showCheckbox: true, showBorder:false});
        }
      });
    });
  </script>
{% endblock %}
{% block page_content %}

  <div class="col-md-4" id="hostgrouptree">

  </div>

  <div class="col-md-6">
    <button id="btn-get-hostgroup" type="button" class="btn btn-default">获取选中的组</button>
  </div>

ansible的配置文件在前端的展示如下,获取ansible选中的组,利用ansible命令就可以实现一些简单的自动化操作了:

python将ansible配置转为json格式实例代码

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
使用python分析git log日志示例
Feb 27 Python
使用Python的Django框架实现事务交易管理的教程
Apr 20 Python
django主动抛出403异常的方法详解
Jan 04 Python
Python定时发送天气预报邮件代码实例
Sep 09 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
Python自动化之UnitTest框架实战记录
Sep 08 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
Python 调用C++封装的进一步探索交流
Mar 04 Python
python实现双向链表原理
May 25 Python
用Python设计一个经典小游戏
May 15 #Python
Python 对象中的数据类型
May 13 #Python
Python中matplotlib中文乱码解决办法
May 12 #Python
使用Python对Csv文件操作实例代码
May 12 #Python
python 读取excel文件生成sql文件实例详解
May 12 #Python
Python实现读取并保存文件的类
May 11 #Python
Python使用defaultdict读取文件各列的方法
May 11 #Python
You might like
php的access操作类
2008/04/09 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
JS实现放大镜效果
2020/09/21 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
Python pass详细介绍及实例代码
2016/11/24 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
python3 enum模块的应用实例详解
2019/08/12 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
优秀少先队工作者事迹材料
2014/05/13 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js