首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python之 ansible 动态In

Python之 ansible 动态In

作者头像
py3study
发布于 2020-01-08 09:34:02
发布于 2020-01-08 09:34:02
73700
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

1.Ansible Inventory  介绍;

Ansible Inventory 是包含静态 Inventory动态 Inventory 两部分的,静态 Inventory 指的是在文件中指定的主机和组,动态 Inventory 指通过外部脚本获取主机列表,并按照 ansible 所要求的格式返回给 ansilbe 命令的。这部分一般会结合 CMDB 资管系统、云计算平台等获取主机信息。由于主机资源一般会动态的进行增减,而这些系统一般会智能更新。我们可以通过这些工具提供的 API 或者接入库查询等方式返回主机列表。

2.mysql数据结构如下;

3.本章节演示从mysql数据作为数据源生成动态ansible 主机;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/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.数据格式结果如下;

5.ansible 执行动态主机如下;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python Mysql数据库基础
在python的使用中,我们不可避免需要使用数据库来完成数据的存储操作。python基于庞大的库,能过轻松进行数据库的使用以及表的各类操作。
摸鱼的G
2023/02/22
1K0
MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录
ORDER BY 关键字默认按升序排序。要按降序排序结果,使用 DESC 关键字。
小万哥
2023/11/11
5170
MySQL 数据库查询与数据操作:使用 ORDER BY 排序和 DELETE 删除记录
MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用
您可以通过使用"LIMIT"语句来限制查询返回的记录数量。以下是一个示例,获取您自己的Python服务器中"customers"表中的前5条记录:
小万哥
2023/12/10
3480
MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用
python 命令行 解析模块 optp
python optparse命令解析模块:https://www.cnblogs.com/pping/p/3989098.html python optparse模块的简单用法:https://www.cnblogs.com/darkpig/p/5677153.html Parser for command line options:https://docs.python.org/3/library/optparse.html
py3study
2020/01/06
6830
python 命令行 解析模块 optp
Python入门系列(十一)一篇搞定python操作MySQL数据库
开始 安装MySQL驱动 $ python -m pip install mysql-connector-python 测试MySQL连接器 import mysql.connector 测试MySQL连接 import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword" ) print(mydb) 创建数据库 impo
用户10002156
2022/09/05
5510
python-数据库编程-如何在Python中连接到数据库
在Python中,我们可以使用各种模块来连接到关系型数据库并进行操作,如MySQL、PostgreSQL、SQLite等。
玖叁叁
2023/04/22
1.4K0
【愚公系列】2021年12月 Python教学课程 24-Python数据库编程
Python 标准数据库接口为 Python DB-API,Python DB-API 为开发人员提供了数据库应用编程接口。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库。不同的数据库你需要下载不同的 DB API 模块,例如你需要访问 Oracle 数据库和MySQL 数据库,你就需要下载 Oracle 和 MySQL各自对应的 python 数据库模块。
愚公搬代码
2021/12/16
4550
Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入
这是您提供的内容的Markdown排版,按照您的要求进行了整理。如果需要进一步的编辑或修改,请告诉我。
小万哥
2023/11/10
6900
Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入
python mysql连接操作(增删改查)
在 MySQL 8.0 中验证插件和密码加密方式发生了变化,要让它使用“mysql_native_password”插件认证方式,所以需要在mysql的配置文件my.ini中[mysqld]下添加一下内容,并重启mysql
织幻妖
2021/02/18
2.2K0
python mysql连接操作(增删改查)
用python 实现linux 的wc
主要利用了optparse 里的OptionParser 模块,自定义选项。在这里,只定义了-l,-c,-w 三种命令,对应wc 命令的-l,-w,-c 三个命令,分别是统计行数,单词数和字符数。通过OptionParser 模块自定义的命令,python 版本的wc 命令也可以达到linux 命令wc 的效果。
py3study
2020/01/07
1.4K0
用python 实现linux 的wc
如何在 Python 中执行 MySQL 结果限制和分页查询
在上面的示例中,Hannah 和 Michael 被排除在结果之外,因为INNER JOIN仅显示存在匹配的记录。如果您希望显示所有用户,即使他们没有喜欢的产品,可以使用LEFT JOIN语句:
小万哥
2023/11/12
1.1K0
如何在 Python 中执行 MySQL 结果限制和分页查询
使用python实现的类似pt-deadlock-logger的死锁邮件告警
pt-deadlock-logger 用起来不太方便,主要是和我们的平台结合不够好,因此参考它的逻辑,我们使用python重新写了个类似功能。
保持热爱奔赴山海
2024/07/03
1290
Ansible基本使用
Ansible 是一款功能强大的 IT 自动化工具,通过无代理机制实现高效的配置管理、应用部署、任务执行以及多节点间的 IT 编排。其主要特点包括:
晓松
2025/01/14
2350
Ansible基本使用
Github | 推荐一个Python脚本集合项目
用python写小脚本是一件好玩的事情,因为不是个大活儿,而且能解决眼边前十分繁琐的事情,这种轻松且便宜的代码颇受人民群众的欢迎~有点生活小妙招的意味
bugsuse
2020/12/16
1.8K0
Github | 推荐一个Python脚本集合项目
Python的OptionParser模块教程
首先需要生成一个实例,以后的操作都是操作这个实例,相当于分配了一段内存空 间。不然无处可以操作,类似C中的结构说明。不过Python是面向”对象“的语言。对 象的属性比结构多很多,可操作性更强,后面我们会介绍在生成 OptionParser 对象 的时候可以传递的一些参数。
Python学习者
2023/01/08
3680
Ansible简单实践Dynamic Inventory
当我们向脚本输入—list参数时,脚本必须将要管理的所有组以json编码的形式输出到标准输出stdout。每个组的值应该是包含每个主机/ip的列表以及定义的变量。下面给出一个简单示例
追马
2020/07/02
1.4K0
python optparse模块学习
本文参考:http://docs.python.org/2/library/optparse.html
py3study
2020/01/06
1K0
14 . Python3之MysSQL
Mysql是一种关系型数据库管理软件、支持网络访问,默认服务端口3306. MySQL通信使用mysql协议.因为数据库要保证数据安全,完整,一般使用TCP.
iginkgo18
2020/09/27
1.9K0
14 . Python3之MysSQL
python学习之argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
py3study
2020/01/09
2K0
如何在Ubuntu 16.04上使用Vault来保护敏感的Ansible数据
Ansible Vault是一项允许用户加密Ansible项目中的值和数据结构的功能。这提供了保证Ansible成功运行敏感数据所必备的能力。
所有的酒都不如你
2018/08/10
2.3K0
推荐阅读
相关推荐
Python Mysql数据库基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档