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中使用SAX解析xml实例
Nov 21 Python
python计算N天之后日期的方法
Mar 31 Python
Python+微信接口实现运维报警
Aug 27 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
对python中dict和json的区别详解
Dec 18 Python
python装饰器原理与用法深入详解
Dec 19 Python
python numpy数组复制使用实例解析
Jan 10 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
python如何写try语句
Jul 14 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
python通配符之glob模块的使用详解
Apr 24 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.ini中文版(1)
2006/10/09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
详解ES6中的let命令
2020/04/05 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
django 自定义过滤器的实现
2019/02/26 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
用Python制作音乐海报
2021/01/26 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
趣味运动会活动方案
2014/02/12 职场文书
施工协议书范本
2014/04/22 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
产品生产计划书
2014/05/07 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
大学学生会竞选稿
2015/11/19 职场文书
《我是什么》教学反思
2016/02/16 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
MySQL详细讲解变量variables的用法
2022/06/21 MySQL