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 深入理解yield
Sep 06 Python
Python下Fabric的简单部署方法
Jul 14 Python
使用python存储网页上的图片实例
May 22 Python
Python实现的读写json文件功能示例
Jun 05 Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
Python中关于浮点数的冷知识
Sep 22 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
关于Python中定制类的比较运算实例
Dec 19 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python趣味挑战之实现简易版音乐播放器
May 28 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可变函数的经典用法
2013/06/20 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
基于React.js实现原生js拖拽效果引发的思考
2016/03/30 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python argv用法详解
2016/01/08 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python定义一个Actor任务
2020/07/29 Python
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
十一酒店活动方案
2014/02/20 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
公司副总经理任命书
2014/06/05 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
解析python中的jsonpath 提取器
2022/01/18 Python