Python中的 ansible 动态Inventory 脚本
1.AnsibleInventory 介绍;
AnsibleInventory是包含静态Inventory和动态Inventory两部分的,静态Inventory指的是在文件中指定的主机和组,动态Inventory指通过外部脚本获取主机列表,并按照ansible所要求的格式返回给ansilbe命令的。这部分一般会结合CMDB资管系统、云计算平台等获取主机信息。由于主机资源一般会动态的进行增减,而这些系统一般会智能更新。我们可以通过这些工具提供的API或者接入库查询等方式返回主机列表。
2.mysql数据结构如下;
3.本章节演示从mysql数据作为数据源生成动态ansible主机;
#!/usr/bin/envpython36 defcommmysql(): importmysql.connector importjson mydb=mysql.connector.connect( host="192.168.1.23",#数据库主机地址 user="root",#数据库用户名 passwd="123456", database="test" ) mycursor=mydb.cursor() mycursor.execute("selecthost,`group`fromansible_hosts;") #mycursor. myresult=mycursor.fetchall() data=dict() #####查询出group分组并去重############# groups=list(set([i[1].decode()foriinmyresult])) data["all"]={"children":groups} data["_meta"]={"hostvars":{}} forgroupingroups: data[group]=dict() data[group]["hosts"]=list() forxinmyresult: ifx[1].decode("utf-8")==group: data[group]["hosts"].append(x[0].decode("utf-8")) returnjson.dumps(data,indent=3) defmain(): fromoptparseimportOptionParser parse=OptionParser() parse.add_option("-l","--list",action="store_true",dest="list",default=False) (option,arges)=parse.parse_args() ifoption.list: print(commmysql()) else: print("abc") if__name__=='__main__': fromoptparseimportOptionParser parse=OptionParser() parse.add_option("-l","--list",action="store_true",dest="list",default=False) (option,arges)=parse.parse_args() ifoption.list: print(commmysql()) else: print("test")
4.数据格式结果如下;
5.ansible执行动态主机如下;
总结
以上所述是小编给大家介绍的Python中的ansible动态Inventory脚本,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。