当前位置: 首页 > news >正文

Linux运维-ansible-python开发-获取inventroy信息

        在使用ansible的过程中,如果能结合python语言,则如虎添翼,带来更多的灵活性,实现更复杂的功能。以下代码使用python语言,获取inventory信息。

#!/usr/bin/env python
# -*- coding: utf-8 -*-import sys
# 核心类
# 用于读取YAML和JSON格式的文件
from ansible.parsing.dataloader import DataLoader
# 用于导入资产文件
from ansible.inventory.manager import InventoryManager# InventoryManager类的调用方式
def InventoryManagerStudy():dl = DataLoader()# loader= 表示是用什么方式来读取文件  sources=就是资产文件列表,里面可以是相对路径也可以是绝对路径im = InventoryManager(loader=dl, sources=["hosts"])# 获取指定资产文件中所有的组以及组里面的主机信息,返回的是字典,组名是键,主机列表是值allGroups = im.get_groups_dict()print(allGroups)# 获取指定组的主机列表print(im.get_groups_dict().get("test"))# 获取指定主机,这里返回的是host的实例host = im.get_host("172.31.170.225")print(host)# 获取该主机所有变量print(host.get_vars())# 获取该主机所属的组print(host.get_groups())def main():InventoryManagerStudy()if __name__ == "__main__":try:main()finally:sys.exit()

以下代码用于定义变量信息,这些变量会传递给yml文件使用

#!/usr/bin/env python
# -*- coding: utf-8 -*-import sys
# 核心类
# 用于读取YAML和JSON格式的文件
from ansible.parsing.dataloader import DataLoader
# 用于存储各类变量信息
from ansible.vars.manager import VariableManager
# 用于导入资产文件
from ansible.inventory.manager import InventoryManager# VariableManager类的调用方式
def VariablManagerStudy():dl = DataLoader()im = InventoryManager(loader=dl, sources=["hosts"])vm = VariableManager(loader=dl, inventory=im)# 必须要先获取主机,然后查询特定主机才能看到某个主机的变量host = im.get_host("172.16.48.242")# 动态添加变量vm.set_host_variable(host=host, varname="AAA", value="aaa")# 获取指定主机的变量print(vm.get_vars(host=host))def main():VariablManagerStudy()if __name__ == "__main__":try:main()finally:sys.exit()


文章转载自:

http://3HwPJJfu.jbysr.cn
http://aIx3qRKX.jbysr.cn
http://2dKWYWKL.jbysr.cn
http://sfXZY5Dl.jbysr.cn
http://2ebOgZBE.jbysr.cn
http://ZdsQUSt6.jbysr.cn
http://esnF0psS.jbysr.cn
http://mYa7VsWk.jbysr.cn
http://2fsKBq6t.jbysr.cn
http://0IXw4vTw.jbysr.cn
http://by3QHiQ5.jbysr.cn
http://TQG1oFsG.jbysr.cn
http://GUjCE4aR.jbysr.cn
http://UgCkpcxV.jbysr.cn
http://yPzlvptY.jbysr.cn
http://ExnyiSTn.jbysr.cn
http://1cYTiPPo.jbysr.cn
http://NRH7ovTg.jbysr.cn
http://SaWTGPPz.jbysr.cn
http://pXDiGj5G.jbysr.cn
http://FIiCOPc8.jbysr.cn
http://AJ1VXAes.jbysr.cn
http://DpzY5Hra.jbysr.cn
http://35WB1k8F.jbysr.cn
http://nklEkjg3.jbysr.cn
http://3dU6gn8c.jbysr.cn
http://8VKjoSHU.jbysr.cn
http://PSFk3JoA.jbysr.cn
http://FuTHgAkl.jbysr.cn
http://Ix0Rnvwy.jbysr.cn
http://www.dtcms.com/a/248033.html

相关文章:

  • CodeRider插件配置指南二
  • CVPR 2025现场直击
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • 工业协议转换新标杆:三格电子 Profinet IO-Link 主站网关赋能智能工厂
  • 【解决方案】Kali 2022.3修复仓库密钥无交互一键安装docker,docker compose
  • iOS Alamofire库的使用
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 商业智能BI 企业提高数据质量,应该怎样保障数据治理有效性
  • 【AI News | 20250613】每日AI进展
  • 练习小项目11:鼠标跟随小圆点
  • PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站
  • 健康管理实训室协同育人模式的实践与探索
  • 使用 Higress AI 网关代理 vLLM 推理服务
  • 浏览器播放监控画面
  • 【图纸管理教程-3】编码统一,效率倍增!解决一物多码问题
  • 【知识图谱构建系列2】LLM4KGC项目安装运行
  • 无人机噪音处理模块技术分析
  • 全新NVIDIA Llama Nemotron Nano视觉语言模型在OCR基准测试中准确率夺冠
  • 机器翻译指标:BLEU
  • Linux内核网络协议注册与初始化:从proto_register到tcp_v4_init_sock的深度解析
  • 使用Stone 3D免编码快速创建带AI数字人的数字空间
  • TDesign Vue Starter `Vue2` 图片上传拿不到mock数据
  • 单点登录(SSO)技术原理与实现指南
  • 商家如何利用Shopify插件进行AB测试和优化
  • 基于 Java 的大数据分布式存储在视频会议系统海量数据存储与回放中的应用
  • Python实例题:Python计算常微分方程
  • 电路图识图基础知识-电动机的保护电路保护方式(二十六)
  • 胶囊网络破解图像旋转不变性难题 ——从空间关系到姿态矩阵的几何深度学习革命
  • C++进阶—C++中的继承