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使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
python SVM 线性分类模型的实现
Jul 19 Python
Python 经典算法100及解析(小结)
Sep 13 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
使用keras和tensorflow保存为可部署的pb格式
May 25 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
解决python3中os.popen()出错的问题
Nov 19 Python
解决pytorch读取自制数据集出现过的问题
May 31 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
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Python转换HTML到Text纯文本的方法
2015/01/15 Python
python复制与引用用法分析
2015/04/08 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python os.access()用法实例
2019/02/18 Python
Python3中exp()函数用法分析
2019/02/19 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
使用pip安装python库的多种方式
2019/07/31 Python
Python识别验证码的实现示例
2020/09/30 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
html5的localstorage详解
2017/05/09 HTML / CSS
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
高中政治教学反思
2014/01/18 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
教师专业自荐信
2014/05/31 职场文书
安全责任书
2015/01/29 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
廉政承诺书2015
2015/04/28 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Go中的条件语句Switch示例详解
2021/08/23 Golang