美文网首页ansible开发
Ansible运维自动化工具(4)-动态获取服务器列表

Ansible运维自动化工具(4)-动态获取服务器列表

作者: 刘小白DOER | 来源:发表于2021-07-31 23:17 被阅读0次

    Ansible可以灵活的匹配hosts文件的内容。hosts文件需要手动添加删除来维护其有效性,那么可以通过读取数据库服务器来动态的获取服务器,减少服务器列表的维护操作。

    代码如下:python/dbhosts.py at main · laufei90/python (github.com)

    现在就来编写python来读取mariadb数据库中的host信息。

    数据库hosts表的结果如下:

    动态获取服务器列表的脚本需要按ansible约定进行返回,用于生成 JSON 的脚本对实现语言没有要求,它可以是一个可执行脚本、二进制文件,或者其他任何可以运行文件,但是必须输出为 JSON 格式,同时必须支持两个参数:--list 和 --host <hostname>。

    1、--list  ,用于列出群组以及群组中的服务器。

    2、--host=hostname ,列出某台服务器的具体信息。

    那么可以使用argparse来解析命令行参数,运行接入如下所示:

        现在我们来按模块解析各个功能。

1、argparse来解析命令行参数

2、字典转为json

3、list_all_hosts函数列出所有数据库

    读取数据表hosts中的所有服务器类表信息,Python字典不支持重复键,简单的方法是使用defaultdict获得一个列表字典。

4、get_host_detail函数累出某台host具体信息

    函数根据参数host来查询数据库,将读取到的信息根据类别存入detail字典中。

5、main主函数连接数据库并根据命令行参数返回数据

    笔者使用PyMySQL来操作数据库 ,是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。在使用中需要import pymysql  。

为了让动态获取服务器列表的脚本功能应用在ansible中,需要为这个py文件添加可执行权限。

  最后的测试如下:

相关文章

网友评论

    本文标题:Ansible运维自动化工具(4)-动态获取服务器列表

    本文链接:https://www.haomeiwen.com/subject/buakvltx.html