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中apply函数的用法实例教程
Jul 31 Python
Python实现从url中提取域名的几种方法
Sep 26 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
Python常见异常分类与处理方法
Jun 04 Python
深入理解Python中range和xrange的区别
Nov 26 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
Python3-异步进程回调函数(callback())介绍
May 02 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
PHP中的output_buffering详细介绍
2014/09/27 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
angular异步验证防抖踩坑实录
2019/12/01 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python yield与实现方法代码分析
2018/02/06 Python
python抽取指定url页面的title方法
2018/05/11 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
运动会开幕式邀请函
2014/01/22 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
领导班子对照检查材料
2014/09/22 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
表扬通报怎么写
2015/01/16 职场文书
会计专业求职信范文
2015/03/19 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
用Python将库打包发布到pypi
2021/04/13 Python