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 相关文章推荐
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
python绘制地震散点图
Jun 18 Python
使用python socket分发大文件的实现方法
Jul 08 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
python 实现ping测试延迟的两种方法
Dec 10 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
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
微信小程序 网络API 上传、下载详解
2016/11/09 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
微信小程序实现tab切换效果
2017/11/21 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
详细介绍Python中的偏函数
2015/04/27 Python
Python文件及目录操作实例详解
2015/06/04 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
本科应届生自荐信
2014/06/29 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
Python实现双向链表基本操作
2022/05/25 Python