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中暂存上传图片的方法
Feb 18 Python
python动态性强类型用法实例
May 09 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
python flask 多对多表查询功能
Jun 25 Python
python中将字典形式的数据循环插入Excel
Jan 16 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
python实点云分割k-means(sklearn)详解
May 28 Python
python实现图片素描效果
Sep 26 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python统计一个文本中重复行数的方法
2014/11/19 Python
Python中的多重装饰器
2015/04/11 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
Python 图片处理库exifread详解
2021/02/25 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
说出一些常用的类,包,接口
2014/09/22 面试题
个人求职简历的自我评价范文
2013/10/09 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
聚美优品的广告词
2014/03/14 职场文书
设计顾问服务计划书
2014/05/04 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript
浅谈redis缓存在项目中的使用
2021/05/20 Redis
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS