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()
Python调用ansible API系列(一)获取资产信息的更多相关文章
- Python调用ansible API系列(四)动态生成hosts文件
方法一:通过最原始的操作文件的方式 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 通过操作文件形式动态生成ansib ...
- Python调用ansible API系列(五)综合使用
如何把动态生成资产信息.执行playbook以及自定义结果结合起来用呢? #!/usr/bin/env python # -*- coding: utf-8 -*- """ ...
- Python调用ansible API系列(二)执行adhoc和playbook
执行adhoc #!/usr/bin/env python # -*- coding: utf-8 -*- import sys from collections import namedtuple ...
- Python调用ansible API系列(三)带有callback的执行adhoc和playbook
在第二篇文章中虽然可以执行adhoc和playbook但是执行结果的输出并不是特别直观,虽然没有报错但是到底什么结果其实你是不知道的尤其是在执行adhoc的时候,这时候我们要利用callback来设置 ...
- python调用ansible api 2.0 运行playbook带callback返回
# -*- coding:utf8 -*- ''' Created on 2017年1月13日 @author: qiancheng ''' import os import json from co ...
- python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码
python3.4学习笔记(二十三) Python调用淘宝IP库获取IP归属地返回省市运营商实例代码 淘宝IP地址库 http://ip.taobao.com/目前提供的服务包括:1. 根据用户提供的 ...
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- Python调用win32 API绘制正弦波
Python调用win32 API新建窗口与直接创建窗口的流程相同 流程:注册窗口→创建窗口→显示窗口→更新窗口→消息循环 代码: # -*- coding: utf-8 -*- import win ...
- 使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
随机推荐
- flex调用JS报安全沙箱错误解决办法
flex调用JS方法弹窗时一般会报安全沙箱错误,只要将被调用的JS方法设置延时就可解决. function openKqQuery(){ window.showModalDialog("pa ...
- hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的
线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...
- 使用float属性的一些小技巧
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAACJCAIAAACHJsJCAAAKUUlEQVR4nO2dTY8cxRnHd73LLsusDd ...
- 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 ...
- PAT1088:Rational Arithmetic
1088. Rational Arithmetic (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue F ...
- java 各数据类型之间的转换
String —> Date SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date ...
- onCreate和onStart谁的开销大?
大家都知道,onCreate方法在创建的时候开始调用一些方法来获取资源方面的东西,这个是在程序运行之初才执行的,一个完整的生命周期中,它只执行了一次,不被onDestroy掉,就一直不调用,而onSt ...
- Linux时间子系统之二:Alarm Timer
一.前言 严格来讲Alarm Timer也算POSIX Timer一部分,包含两种类型CLOCK_REALTIME_ALARM和CLOCK_BOOTTIME_ALARM.分别是在CLOCK_REALT ...
- Zepto源码(2016)——Zepto模块(核心模块)
// Zepto.js // (c) 2010-2016 Thomas Fuchs // Zepto.js may be freely distributed under the MIT licens ...
- Spring_boot简单操作数据库
Spring_boot搭配Spring Data JPA简单操作数据库 spring boot 配置文件可以使用yml文件,默认spring boot 会加载resources目录的下的applica ...