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手机号码归属地查询代码
May 04 Python
使用python遍历指定城市的一周气温
Mar 31 Python
Python实现excel转sqlite的方法
Jul 17 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
python之信息加密题目详解
Jun 26 Python
python pytest进阶之conftest.py详解
Jun 27 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
基于python读取.mat文件并取出信息
Dec 16 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
Java Spring项目国际化(i18n)详细方法与实例
Mar 20 Python
python合并多个excel文件的示例
Sep 23 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
Yii框架登录流程分析
2014/12/03 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
python logging类库使用例子
2014/11/22 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
JPA面试常见问题
2016/11/14 面试题
旅游个人求职信范文
2014/01/30 职场文书
党员公开承诺书
2014/03/25 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
联欢会开场白
2015/06/01 职场文书