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的Flask框架中的signals信号机制
Jun 13 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
Python使用Django实现博客系统完整版
Sep 29 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
Jul 11 Python
numpy linalg模块的具体使用方法
May 26 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
用python对oracle进行简单性能测试
Dec 05 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安全配置详细说明
2011/09/26 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
Python常见数据结构详解
2014/07/24 Python
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
儿童编程python入门
2018/05/08 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
css3中transition属性详解
2014/09/02 HTML / CSS
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
平民服装店创业计划书
2014/01/17 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
家长通知书家长意见
2014/12/30 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
运动员代表致辞
2015/07/29 职场文书
详解MySQL集群搭建
2021/05/26 MySQL
mysql的Buffer Pool存储及原理
2022/04/02 MySQL
MySQL创建管理RANGE分区
2022/04/13 MySQL