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 自动安装 Rising 杀毒软件
Apr 24 Python
Python中字符串的处理技巧分享
Sep 17 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
Python读写zip压缩文件的方法
Aug 29 Python
python并发和异步编程实例
Nov 15 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python自带的IDE在哪里
Jul 01 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
Python实现七个基本算法的实例代码
Oct 08 Python
python+opencv实现目标跟踪过程
Jun 21 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
php强制运行广告的方法
2014/12/01 PHP
php上传图片类及用法示例
2016/05/11 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
php 浮点数比较方法详解
2017/05/05 PHP
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Python实现的建造者模式示例
2018/08/06 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
Python进行特征提取的示例代码
2020/10/15 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
应届毕业生个人求职自荐信
2014/01/06 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
金融保险专业求职信
2014/09/03 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
学期个人工作总结
2015/02/13 职场文书
经费申请报告范文
2015/05/18 职场文书