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利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Python全排列操作实例分析
Jul 24 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
python 写一个性能测试工具(一)
Oct 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实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
PHP 函数学习简单小结
2010/07/08 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP中文编码小技巧
2014/12/25 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
nginx下安装php7+php5
2016/07/31 PHP
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
Python上下文管理器和with块详解
2017/09/09 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python3图片文件批量重命名处理
2019/10/31 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python序列类型种类详解
2020/02/26 Python
python实现FTP循环上传文件
2020/03/20 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
Python try except else使用详解
2021/01/12 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
运动会入场词50字
2014/02/20 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
中职招生先进个人材料
2014/08/31 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技