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

要提前准备一个hosts文件

获取组或者主机

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. from collections import namedtuple
  6. # 核心类
  7. # 用于读取YAML和JSON格式的文件
  8. from ansible.parsing.dataloader import DataLoader
  9. # 用于存储各类变量信息
  10. from ansible.vars.manager import VariableManager
  11. # 用于导入资产文件
  12. from ansible.inventory.manager import InventoryManager
  13.  
  14. # InventoryManager类的调用方式
  15. def InventoryManagerStudy():
  16. dl = DataLoader()
  17. # loader= 表示是用什么方式来读取文件 sources=就是资产文件列表,里面可以是相对路径也可以是绝对路径
  18. im = InventoryManager(loader=dl, sources=["hosts"])
  19.  
  20. # 获取指定资产文件中所有的组以及组里面的主机信息,返回的是字典,组名是键,主机列表是值
  21. allGroups = im.get_groups_dict()
  22. print(allGroups)
  23.  
  24. # 获取指定组的主机列表
  25. print(im.get_groups_dict().get("test"))
  26.  
  27. # 获取指定主机,这里返回的是host的实例
  28. host = im.get_host("172.16.48.242")
  29. print(host)
  30. # 获取该主机所有变量
  31. print(host.get_vars())
  32. # 获取该主机所属的组
  33. print(host.get_groups())
  34.  
  35. def main():
  36. InventoryManagerStudy()
  37.  
  38. if __name__ == "__main__":
  39. try:
  40. main()
  41. finally:
  42. sys.exit()

获取变量

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. from collections import namedtuple
  6. # 核心类
  7. # 用于读取YAML和JSON格式的文件
  8. from ansible.parsing.dataloader import DataLoader
  9. # 用于存储各类变量信息
  10. from ansible.vars.manager import VariableManager
  11. # 用于导入资产文件
  12. from ansible.inventory.manager import InventoryManager
  13.  
  14. # VariableManager类的调用方式
  15. def VariablManagerStudy():
  16. dl = DataLoader()
  17. im = InventoryManager(loader=dl, sources=["hosts"])
  18. vm = VariableManager(loader=dl, inventory=im)
  19.  
  20. # 必须要先获取主机,然后查询特定主机才能看到某个主机的变量
  21. host = im.get_host("172.16.48.242")
  22.  
  23. # 动态添加变量
  24. vm.set_host_variable(host=host, varname="AAA", value="aaa")
  25. # 获取指定主机的变量
  26. print(vm.get_vars(host=host))
  27.  
  28. def main():
  29. VariablManagerStudy()
  30.  
  31. if __name__ == "__main__":
  32. try:
  33. main()
  34. finally:
  35. sys.exit()

Python调用ansible API系列(一)获取资产信息的更多相关文章

  1. Python调用ansible API系列(四)动态生成hosts文件

    方法一:通过最原始的操作文件的方式 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 通过操作文件形式动态生成ansib ...

  2. Python调用ansible API系列(五)综合使用

    如何把动态生成资产信息.执行playbook以及自定义结果结合起来用呢? #!/usr/bin/env python # -*- coding: utf-8 -*- """ ...

  3. Python调用ansible API系列(二)执行adhoc和playbook

    执行adhoc #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from collections import namedtuple ...

  4. Python调用ansible API系列(三)带有callback的执行adhoc和playbook

    在第二篇文章中虽然可以执行adhoc和playbook但是执行结果的输出并不是特别直观,虽然没有报错但是到底什么结果其实你是不知道的尤其是在执行adhoc的时候,这时候我们要利用callback来设置 ...

  5. python调用ansible api 2.0 运行playbook带callback返回

    # -*- coding:utf8 -*- ''' Created on 2017年1月13日 @author: qiancheng ''' import os import json from co ...

  6. python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码

    python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...

  7. 关于python调用zabbix api接口

    因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...

  8. Python调用win32 API绘制正弦波

    Python调用win32 API新建窗口与直接创建窗口的流程相同 流程:注册窗口→创建窗口→显示窗口→更新窗口→消息循环 代码: # -*- coding: utf-8 -*- import win ...

  9. 使用Python调用Flickr API抓取图片数据

    Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...

随机推荐

  1. flex调用JS报安全沙箱错误解决办法

    flex调用JS方法弹窗时一般会报安全沙箱错误,只要将被调用的JS方法设置延时就可解决. function openKqQuery(){ window.showModalDialog("pa ...

  2. hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

  3. 使用float属性的一些小技巧

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAACJCAIAAACHJsJCAAAKUUlEQVR4nO2dTY8cxRnHd73LLsusDd ...

  4. C Primer Plus 第9章 函数 编程练习

    复习题: 8. int choice(int a,int b,int c){ int max; max = a; if (b > max) max = b; if (c > max) ma ...

  5. PAT1088:Rational Arithmetic

    1088. Rational Arithmetic (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue F ...

  6. java 各数据类型之间的转换

    String —> Date SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date ...

  7. onCreate和onStart谁的开销大?

    大家都知道,onCreate方法在创建的时候开始调用一些方法来获取资源方面的东西,这个是在程序运行之初才执行的,一个完整的生命周期中,它只执行了一次,不被onDestroy掉,就一直不调用,而onSt ...

  8. Linux时间子系统之二:Alarm Timer

    一.前言 严格来讲Alarm Timer也算POSIX Timer一部分,包含两种类型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM.分别是在CLOCK_REALT ...

  9. Zepto源码(2016)——Zepto模块(核心模块)

    // Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...

  10. Spring_boot简单操作数据库

    Spring_boot搭配Spring Data JPA简单操作数据库 spring boot 配置文件可以使用yml文件,默认spring boot 会加载resources目录的下的applica ...