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中返回字典键的值的values()方法使用
May 22 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
Python语言描述连续子数组的最大和
Jan 04 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
python进程和线程用法知识点总结
May 28 Python
python安装第三方库如xlrd的方法
Oct 31 Python
pandas中DataFrame检测重复值的实现
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
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
php和javascript之间变量的传递实现代码
2012/12/19 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
actionscript与javascript的区别
2011/05/25 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
讲解Python中的递归函数
2015/04/27 Python
判断网页编码的方法python版
2016/08/12 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
委托书怎么写
2014/07/31 职场文书
置业顾问岗位职责
2015/02/09 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
Python OpenGL基本配置方式
2022/05/20 Python