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 21 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
Python requests模块实例用法
Feb 11 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python实现批量文件重命名
Oct 31 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
python读取excel数据并且画图的实现示例
Feb 08 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
js的回调函数详解
2015/01/05 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
javascript闭包的理解
2015/04/01 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
2016/01/26 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python cookielib 登录人人网的实现代码
2012/12/19 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
英语国培研修感言
2014/02/13 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
会计求职信
2014/05/29 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书