zoukankan      html  css  js  c++  java
  • Python调用ansible API系列(一)获取资产信息

    你想让ansible工作首先就需要设置资产信息,那么我们如何通过使用Python调取Ansible的API来获取资产信息呢?

    要提前准备一个hosts文件

    获取组或者主机

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    from collections import namedtuple
    # 核心类
    # 用于读取YAML和JSON格式的文件
    from ansible.parsing.dataloader import DataLoader
    # 用于存储各类变量信息
    from ansible.vars.manager import VariableManager
    # 用于导入资产文件
    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.16.48.242")
        print(host)
        # 获取该主机所有变量
        print(host.get_vars())
        # 获取该主机所属的组
        print(host.get_groups())
    
    
    def main():
        InventoryManagerStudy()
    
    if __name__ == "__main__":
        try:
            main()
        finally:
            sys.exit()

    获取变量

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import sys
    from collections import namedtuple
    # 核心类
    # 用于读取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()

  • 相关阅读:
    第六次实验报告
    第三次实验报告
    第五张循环语句总结
    第二次实验报告
    第一次实验报告
    第一次作业
    第九章 结构体与共用体
    第八章 指针实验
    第七章数组实验
    第六章实验报告(2)
  • 原文地址:https://www.cnblogs.com/rexcheny/p/10677040.html
Copyright © 2011-2022 走看看