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编写爬虫的基本模块及框架使用指南
Jan 20 Python
浅述python中argsort()函数的实例用法
Mar 30 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
pytorch中的weight-initilzation用法
Jun 24 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 Python
全网非常详细的pytest配置文件
Jul 15 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代码
2007/03/08 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
浅析php工厂模式
2014/11/25 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
Node.js插件的正确编写方式
2014/08/03 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python set内置函数的具体使用
2019/07/02 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
物业管理个人自我评价
2013/11/08 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
事业单位聘任报告
2015/03/02 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android