当前位置: 首页 > 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://www.xdnf.cn/news/1018351.html

相关文章:

  • 第二十五章 25.Network Architecture(CCNA)
  • 简析MDM在餐饮设备中的部署与应用
  • 快速掌握Django框架设计思想(图解版)
  • java_oss_微信小程序_通过临时签名url访问oss中存储的图像
  • 微信小程序中跨页面调用函数来刷新页面
  • 深入理解JavaScript设计模式之策略模式
  • @Profile, @Conditional, @ConditionalOnMissingBean, @ConditionalOnClass
  • nodejs 语言特性(面试系列2)
  • 【Pandas】pandas DataFrame droplevel
  • java中跨域问题及解决方案
  • Spring XML 常用命名空间配置
  • React Native 项目实战 —— 记账本应用开发指南
  • 【React Native 性能优化:虚拟列表嵌套 ScrollView 问题全解析】
  • Java-数组-异常(基础)
  • 包含40个购物网站UI界面的psd适用于电商项目
  • 在 Linux 系统中通过 yum 安装 Sublime Text
  • 平压印刷机设计原理与关键技术研究
  • 网络安全防护:点击劫持
  • Linux 系统设置时区
  • Token 的流动性:为什么它是项目的关键?
  • 传染病传播模拟:基于社会接触网络的疫情预测模型
  • 【设计模式】UML图与工厂模式
  • 德信软件,512天,我的创作纪念日
  • RocketMQ总结
  • Rimini Street宣布将SAP ECC和S/4HANA支持延长至2040年,为企业提供替代路径
  • 基于大模型预测过敏性紫癜的技术方案大纲
  • Rust 学习笔记2025.6.13
  • Excel词典(xllex.dll)文件丢失或损坏导致功能异常?别慌!专业修复策略来了!
  • 排序--计数排序
  • Active Directory Certificate Services(AD CS)攻击基础