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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
python使用datetime模块计算各种时间间隔的方法
Mar 24 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
Python中垃圾回收和del语句详解
Nov 15 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
python中类与对象之间的关系详解
Dec 16 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
python实现简单的井字棋
May 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简单系统查询模块代码打包下载
2008/06/07 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python线程详解
2015/06/24 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python配置grpc环境
2019/01/01 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
详解字符串在Python内部是如何省内存的
2020/02/03 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
详解css position 5种不同的值的用法
2019/07/30 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
工地安全检查制度
2014/02/04 职场文书
学校政风行风整改方案
2014/10/25 职场文书
终止合同协议书范本
2016/03/22 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android