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的三目运算符和not in运算符使用示例
Mar 03 Python
用Python代码来解图片迷宫的方法整理
Apr 02 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
Python写一个基于MD5的文件监听程序
Mar 11 Python
Python中Unittest框架的具体使用
Aug 27 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
如何用Python和JS实现的Web SSH工具
Feb 23 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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 shell命令合并图片的代码
2011/06/23 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
javascript实现数独解法
2015/03/14 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python探索之修改Python搜索路径
2017/10/25 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python 生成图形验证码的方法示例
2018/11/11 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
python中Django文件上传方法详解
2020/08/05 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
公司培训欢迎词
2014/01/10 职场文书
中年人生感言
2014/02/04 职场文书
《童年》教学反思
2014/02/18 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python