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 相关文章推荐
使用pdb模块调试Python程序实例
Jun 02 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
PyQt5每天必学之组合框
Apr 20 Python
tensorflow实现简单的卷积神经网络
May 24 Python
mac下如何将python2.7改为python3
Jul 13 Python
Python爬虫文件下载图文教程
Dec 23 Python
python实现抖音点赞功能
Apr 07 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
python字符串判断密码强弱
Mar 18 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
python字典的元素访问实例详解
Jul 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
十大“创意”战术!
2020/03/04 星际争霸
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
jquery中map函数遍历数组用法实例
2015/05/18 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
详解vue axios二次封装
2018/07/22 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
wxPython色环电阻计算器
2019/11/18 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python 制作网站小说下载器
2021/02/20 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
《我的第一本书》教学反思
2014/02/15 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
redis实现排行榜功能
2021/05/24 Redis
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android