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基础教程之udp端口扫描
Feb 10 Python
python文件操作之目录遍历实例分析
May 20 Python
简单谈谈python中的语句和语法
Aug 10 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
python实现KNN分类算法
Oct 16 Python
python中删除某个元素的方法解析
Nov 05 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
python从PDF中提取数据的示例
Oct 30 Python
Python操作Excel的学习笔记
Feb 18 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Apr 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP反射机制用法实例
2014/08/28 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
python3抓取中文网页的方法
2015/07/28 Python
浅谈python中的__init__、__new__和__call__方法
2017/07/18 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Python日志处理模块logging用法解析
2020/05/19 Python
golang/python实现归并排序实例代码
2020/08/30 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
小学生个人先进事迹材料
2014/05/08 职场文书
环保建议书400字
2014/05/14 职场文书
安全标语大全
2014/06/10 职场文书
会计学习心得体会
2014/09/09 职场文书
政府会议通知范文
2015/04/15 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
python区块链实现简版工作量证明
2022/05/25 Python
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android