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定时器使用示例分享
Feb 16 Python
python中__call__方法示例分析
Oct 11 Python
python查找目录下指定扩展名的文件实例
Apr 01 Python
numpy中索引和切片详解
Dec 15 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
python正则表达式匹配[]中间为任意字符的实例
Dec 25 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
jquery插件开发方法(初学者)
2012/02/03 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
Quasar Input:type=&quot;number&quot; 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
sklearn的predict_proba使用说明
2020/06/28 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
宿舍卫生检讨书
2014/01/16 职场文书
五年级科学教学反思
2014/02/05 职场文书
元宵晚会主持词
2014/03/25 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
详解Python函数print用法
2021/06/18 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python
win7配置本地ftp服务器的图文教程
2022/08/05 Servers