欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Linux运维-ansible-python开发-获取inventroy信息

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

2025/6/15 0:43:06 来源:https://blog.csdn.net/capricorn_don/article/details/148631784  浏览:    关键词: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()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词