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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
python和C语言混合编程实例
Jun 04 Python
Python代码的打包与发布详解
Jul 30 Python
Python中实现对list做减法操作介绍
Jan 09 Python
python使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
NumPy 数学函数及代数运算的实现代码
Jul 18 Python
python自定义函数def的应用详解
Jun 03 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 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文件操作之小型留言本实例
2015/06/20 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
闭幕式主持词
2014/04/02 职场文书
《海底世界》教学反思
2014/04/16 职场文书
员工合理化建议书
2014/05/19 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
中学社团活动总结
2015/05/07 职场文书
团日活动总结格式
2015/05/11 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android