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编写vim插件的简单示例
Apr 17 Python
Python多线程、异步+多进程爬虫实现代码
Feb 17 Python
Python 递归函数详解及实例
Dec 27 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
python语言元素知识点详解
May 15 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
python 标准差计算的实现(std)
Jul 29 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Python基于httpx模块实现发送请求
Jul 07 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Python连续赋值需要注意的一些问题
Jun 03 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,不用COM,生成excel文件
2006/10/09 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
axios学习教程全攻略
2017/03/26 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
Python下的twisted框架入门指引
2015/04/15 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
详解Django CAS 解决方案
2019/10/30 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
行政人员岗位职责
2013/12/08 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
个人自我鉴定总结
2014/03/25 职场文书
社区服务标语
2014/07/01 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
个人租房协议书样本
2014/10/01 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
投资意向协议书
2015/01/29 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL