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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
pygame实现飞机大战
Mar 11 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
Python接口自动化测试框架运行原理及流程
Nov 30 Python
python常量折叠基础知识点讲解
Feb 28 Python
Python实现视频中添加音频工具详解
Dec 06 Python
Python采集股票数据并制作可视化柱状图
Apr 04 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
php解析json数据实例
2014/08/19 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
pycharm安装和首次使用教程
2018/08/27 Python
python感知机实现代码
2019/01/18 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python selenium xpath定位操作
2020/09/01 Python
Python中Qslider控件实操详解
2021/02/20 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
信息技术教学反思
2014/02/12 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
2014公司年终工作总结
2014/12/19 职场文书
结婚老公保证书
2015/02/26 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers