python将ansible配置转为json格式实例代码

发布时间 - 2026-01-11 01:07:30    点击率:

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格式  # ansible配置转为json格式  # python ansible自动化运维工具执行流程  # python中Ansible模块的Playbook的具体使用  # ansible-playbook实现自动部署KVM及安装python3的详细教程  # Python自动化运维之Ansible定义主机与组规则操作详解  # python自动化之Ansible的安装教程  # python ansible服务及剧本编写  # ansible作为python模块库使用的方法实例  # python开发的自动化运维工具ansible详解  # 配置文件  # 作了  # 希望能  # 谢谢大家  # 转换成  # 就可以  # 展示了  # hosts  # read  # secs  # sections  # sec  # True  # ConfigParser  # import  # dict_result  # allow_no_value  # cf  # options  # tmp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 昵图网官网入口 昵图网素材平台官方入口  PythonWeb开发入门教程_Flask快速构建Web应用  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel如何使用Blade组件和插槽?(Component代码示例)  python中快速进行多个字符替换的方法小结  javascript中对象的定义、使用以及对象和原型链操作小结  如何在建站之星绑定自定义域名?  Laravel如何实现模型的全局作用域?(Global Scope示例)  zabbix利用python脚本发送报警邮件的方法  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何使用模型观察者?(Observer代码示例)  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel如何实现多对多模型关联?(Eloquent教程)  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何发送系统通知?(Notification渠道示例)  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  中国移动官方网站首页入口 中国移动官网网页登录  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何使用Telescope进行调试?(安装和使用教程)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  想要更高端的建设网站,这些原则一定要坚持!  详解jQuery停止动画——stop()方法的使用  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么使用Intervention Image库处理图片上传和缩放  php json中文编码为null的解决办法  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  专业商城网站制作公司有哪些,pi商城官网是哪个?  北京网站制作公司哪家好一点,北京租房网站有哪些?  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速上传自定义模板至建站之星?  如何自定义建站之星网站的导航菜单样式?  如何快速生成高效建站系统源代码?  php结合redis实现高并发下的抢购、秒杀功能的实例  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何用PHP快速搭建高效网站?分步指南  Laravel如何配置任务调度?(Cron Job示例)  如何用VPS主机快速搭建个人网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何在腾讯云服务器上快速搭建个人网站?