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搜索指定目录的方法
Apr 29 Python
Python中字典的基础知识归纳小结
Aug 19 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
使用python实现mqtt的发布和订阅
May 05 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
python3 配置logging日志类的操作
Apr 08 Python
pandas 强制类型转换 df.astype实例
Apr 09 Python
python实现与redis交互操作详解
Apr 21 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
JavaScript静态的动态
2006/09/18 Javascript
JavaScript 继承详解(四)
2009/07/13 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python实现逻辑回归的方法示例
2017/05/02 Python
python简易远程控制单线程版
2018/06/20 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
XML文档面试题
2015/08/05 面试题
银行实习自我鉴定
2013/10/12 职场文书
财务部岗位职责
2013/11/19 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2016年情人节问候语
2015/11/11 职场文书
电工实训心得体会
2016/01/14 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android