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


相关推荐: Laravel怎么为数据库表字段添加索引以优化查询  Python数据仓库与ETL构建实战_Airflow调度流程详解  如何用PHP快速搭建CMS系统?  香港服务器WordPress建站指南:SEO优化与高效部署策略  html如何与html链接_实现多个HTML页面互相链接【互相】  怎么用AI帮你设计一套个性化的手机App图标?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  iOS UIView常见属性方法小结  iOS发送验证码倒计时应用  微信小程序 HTTPS报错整理常见问题及解决方案  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  详解Huffman编码算法之Java实现  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Python函数文档自动校验_规范解析【教程】  高防服务器租用首荐平台,企业级优惠套餐快速部署  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何在IIS服务器上快速部署高效网站?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何将凡科建站内容保存为本地文件?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel如何实现本地化和多语言支持?(i18n教程)  HTML 中动态设置元素 name 属性的正确语法详解  装修招标网站设计制作流程,装修招标流程?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  C++时间戳转换成日期时间的步骤和示例代码  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何自定义分页视图?(Pagination示例)  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  C语言设计一个闪闪的圣诞树  Bootstrap整体框架之CSS12栅格系统  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel如何处理文件下载请求?(Response示例)  Swift中循环语句中的转移语句 break 和 continue  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  怎样使用JSON进行数据交换_它有什么限制  如何用wdcp快速搭建高效网站?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道