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实现多线程网页爬虫
Sep 06 Python
python 写的一个爬虫程序源码
Feb 28 Python
使用Flask集成bootstrap的方法
Jul 24 Python
浅谈Django的缓存机制
Aug 23 Python
Python最小二乘法矩阵
Jan 02 Python
Python实现FM算法解析
Jun 18 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
Numpy一维线性插值函数的用法
Apr 22 Python
python 实现两个npy档案合并
Jul 01 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
python数据库批量插入数据的实现(executemany的使用)
Apr 30 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系统命令函数使用分析
2013/07/05 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
jquery radio 操作代码
2011/03/16 Javascript
js变换显示图片的实例
2013/04/16 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
微信小程序 跳转方式总结
2017/04/20 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python常见的格式化输出小结
2016/12/15 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python中的流程控制详解
2021/02/18 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
销售自荐信
2013/10/22 职场文书
经管应届生求职信
2013/11/17 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
大学生社会实践方案
2014/05/11 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
上诉答辩状范文
2015/05/22 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技