Python中的 ansible 动态Inventory 脚本


Posted in Python onJanuary 19, 2020

1.Ansible Inventory  介绍;

Ansible Inventory 是包含静态 Inventory 和动态 Inventory 两部分的,静态 Inventory 指的是在文件中指定的主机和组,动态 Inventory 指通过外部脚本获取主机列表,并按照 ansible 所要求的格式返回给 ansilbe 命令的。这部分一般会结合 CMDB 资管系统、云计算平台等获取主机信息。由于主机资源一般会动态的进行增减,而这些系统一般会智能更新。我们可以通过这些工具提供的 API 或者接入库查询等方式返回主机列表。

2.mysql数据结构如下;

Python中的 ansible 动态Inventory 脚本

3.本章节演示从mysql数据作为数据源生成动态ansible 主机;

#!/usr/bin/env python36
def commmysql():
  import mysql.connector
  import json
  mydb = mysql.connector.connect(
    host="192.168.1.23", # 数据库主机地址
    user="root", # 数据库用户名
    passwd="123456",
    database="test"
  )
  mycursor = mydb.cursor()
  mycursor.execute(" select host,`group` from ansible_hosts;")
  #mycursor.
  myresult = mycursor.fetchall()
  data = dict()
  #####查询出group分组并去重#############
  groups = list(set([i[1].decode() for i in myresult]))
  data["all"] = {"children": groups}
  data["_meta"] = {"hostvars": {}}
  for group in groups:
    data[group] = dict()
    data[group]["hosts"] = list()
    for x in myresult:
      if x[1].decode("utf-8") == group:
        data[group]["hosts"].append(x[0].decode("utf-8"))
  return json.dumps(data,indent=3)
def main():
  from optparse import OptionParser
  parse = OptionParser()
  parse.add_option("-l", "--list", action="store_true", dest="list", default=False)
  (option, arges) = parse.parse_args()
  if option.list:
    print(commmysql())
  else:
    print("abc")
if __name__ == '__main__':
  from optparse import OptionParser
  parse = OptionParser()
  parse.add_option("-l", "--list", action="store_true", dest="list", default=False)
  (option, arges) = parse.parse_args()
  if option.list:
    print(commmysql())
  else:
    print("test")

4.数据格式结果如下;

Python中的 ansible 动态Inventory 脚本

5.ansible 执行动态主机如下;

Python中的 ansible 动态Inventory 脚本

总结

以上所述是小编给大家介绍的Python中的 ansible 动态Inventory 脚本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
python实现复制整个目录的方法
May 12 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
基于python实现简单日历
Jul 28 Python
深入理解Django自定义信号(signals)
Oct 15 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
Python多线程多进程实例对比解析
Mar 12 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
Python实现序列化及csv文件读取
Jan 19 #Python
使用python turtle画高达
Jan 19 #Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 #Python
python实现五子棋游戏(pygame版)
Jan 19 #Python
Python turtle画图库&&画姓名实例
Jan 19 #Python
python3连接mysql获取ansible动态inventory脚本
Jan 19 #Python
基于Pycharm加载多个项目过程图解
Jan 19 #Python
You might like
收音机术语解释
2021/03/01 无线电
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
如何提高MySql的安全性
2014/06/19 面试题
求职者应聘的自我评价
2013/10/16 职场文书
中学劳技课教师的自我评价
2014/02/05 职场文书
汽车广告策划方案
2014/05/31 职场文书
个人工作总结范文2014
2014/11/07 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书