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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
Python实现从URL地址提取文件名的方法
May 15 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
利用Python抓取行政区划码的方法
Nov 28 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
详解pandas中iloc, loc和ix的区别和联系
Mar 09 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
Jan 13 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中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP 记录访客的浏览信息方法
2018/01/29 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python基于有道实现英汉字典功能
2015/07/25 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
单位领导证婚词
2014/01/14 职场文书
反腐倡廉标语
2014/06/24 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python