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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Python字典及字典基本操作方法详解
Jan 30 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
python数据化运营的重要意义
Nov 25 Python
python实现图片上添加图片
Nov 26 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
用python写爬虫简单吗
Jul 28 Python
详解python 内存优化
Aug 17 Python
如何用 Python 制作一个迷宫游戏
Feb 25 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 MVC模式在网站架构中的实现分析
2010/03/04 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
解析vue中的$mount
2017/12/21 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
Keras搭建自编码器操作
2020/07/03 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
Gap英国官网:Gap UK
2018/07/18 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
社区安全检查制度
2014/02/03 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
委托公证书范本
2014/04/03 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
高中综合实践活动总结
2014/07/07 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
关于倡议书的范文
2015/04/29 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
汽车车尾标语大全
2015/08/11 职场文书
Django框架中视图的用法
2022/06/10 Python