iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python API 2.0
  • 441
分享到

Python API 2.0

PythonAPI 2023-01-31 02:01:55 441人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python api 2.0从2.0的事情开始更复杂一些,但是你会得到更多离散和可读的类: #!/usr/bin/env Python import JSONfrom collections import namedtuplefrom an

python api 2.0
从2.0的事情开始更复杂一些,但是你会得到更多离散和可读的类:

#!/usr/bin/env Python

import JSON
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars import VariableManager
from ansible.inventory import Inventory
from ansible.playbook.play import Play
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.plugins.callback import CallbackBase

class ResultCallback(CallbackBase):
"""用于执行结果的示例回调插件

 如果要将所有结果收集到单个对象进行处理
 执行的结束,看看利用``json``回调插件
 或编写自己的自定义回调插件
"""
def v2_runner_on_ok(self, result, **kwargs):
    """打印结果的json表示

     该方法可以将结果存储在实例属性中以供以后检索
    """
    host = result._host
    print json.dumps({host.name: result._result}, indent=4)

Options = namedtuple('Options', ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check'])

variable_manager = VariableManager()
loader = DataLoader()
options = Options(connection='local', module_path='/path/to/mymodules', forks=100, become=None, become_method=None, become_user=None, check=False)
passWords = dict(vault_pass='secret')

#实例化我们的ResultCallback来处理结果进来时
results_callback = ResultCallback()

#创建库存并传递给var manager
inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
variable_manager.set_inventory(inventory)

play_source = dict(
name = "Ansible Play",
hosts = 'localhost',
gather_facts = 'no',
tasks = [
dict(action=dict(module='shell', args='ls'), reGISter='shell_out'),
dict(action=dict(module='debug', args=dict(msg='{{shell_out.stdout}}')))
]
)
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)

tqm = None
try:
tqm = TaskQueueManager(
inventory=inventory,
variable_manager=variable_manager,
loader=loader,
options=options,
passwords=passwords,
stdout_callback=results_callback, # Use our custom callback instead of the default callback plugin
)
result = tqm.run(play)
finally:
if tqm is not None:
tqm.cleanup()
Python API pre 2.0
这很简单:

import ansible.runner

runner = ansible.runner.Runner(
module_name='ping',
module_args='',
pattern='WEB*',
forks=10
)
datastructure = runner.run()
运行方法返回每个主机的结果,根据是否可以联系来分组。 返回类型是模块特定的,如关于模块文档中所示:

复制代码
{
"dark" : {
"web1.example.com" : "failure message"
},
"contacted" : {
"web2.example.com" : 1
}
}
复制代码
一个模块可以返回任何类型的JSON数据,所以Ansible可以作为框架来快速构建强大的应用程序和脚本。

详细API示例

以下脚本打印出所有主机的正常运行时间信息:

#!/usr/bin/python

import ansible.runner
import sys

results = ansible.runner.Runner(
pattern='*', forks=10,
module_name='command', module_args='/usr/bin/uptime',
).run()

if results is None:
print "No hosts found"
sys.exit(1)

print "UP ***"
for (hostname, result) in results['contacted'].items():
if not 'failed' in result:
print "%s >>> %s" % (hostname, result['stdout'])

print "FAILED ***"
for (hostname, result) in results['contacted'].items():
if 'failed' in result:
print "%s >>> %s" % (hostname, result['msg'])

print "DOWN *****"
for (hostname, result) in results['dark'].items():
print "%s >>> %s" % (hostname, result)
高级程序员也可能希望将源读取到ansible本身,因为它使用API(具有所有可用选项)来实现可执行的命令行工具(lib / ansible / cli /)。

Http://docs.ansible.com/ansible/latest/dev_guide/developing_api.html

--结束END--

本文标题: Python API 2.0

本文链接: https://www.lsjlt.com/news/185277.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python API 2.0
    Python API 2.0从2.0的事情开始更复杂一些,但是你会得到更多离散和可读的类: #!/usr/bin/env python import jsonfrom collections import namedtuplefrom an...
    99+
    2023-01-31
    Python API
  • JPA 2.0动态查询机制Criteria API怎么用
    小编给大家分享一下JPA 2.0动态查询机制Criteria API怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!自从 JPA 于 2006 年首次被引入之...
    99+
    2023-06-17
  • jOOQ 2.0怎么用
    本篇内容主要讲解“jOOQ 2.0怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jOOQ 2.0怎么用”吧!jOOQ 2.0 是 jOOQ 的一个全新开始,主要定位一些长期以来用户强烈要求...
    99+
    2023-06-17
  • Python API教程:API入门
    什么是API? 一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。 本文就集中焦点在此话题中。 当我们想从一个API中接收数据,我们需要开始请求。...
    99+
    2023-09-07
    python 开发语言
  • saltstack python api
    一、Python安装saltstackpip install salt二、接口调用实例1、test.pingimport salt.clientclient = salt.client.LocalClient()ret = client.c...
    99+
    2023-01-31
    saltstack python api
  • Python Elasticsearch api
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。下面介绍了利用Python API接口进行数据查询,方便其他系统的调用。安装APIpip3 ...
    99+
    2023-01-31
    Python Elasticsearch api
  • JActor 2.0 RC3怎么用
    这篇文章主要讲解了“JActor 2.0 RC3怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JActor 2.0 RC3怎么用”吧!该版本修复了 RC1 中的一个 API bug 以...
    99+
    2023-06-17
  • zabbix 2.0.X安装
    file /sbin/init #查看32/64位机器uname -r#查看linxu版本yum -y install gcc gcc-c++ autoconf httpd php mysql lrzsz ...
    99+
    2024-04-02
  • Vue 2.0 基础详细
    目录1、特点2、实例3、选项 Options4、基本语法5、生命周期6、路由管理Vue-Router6.1 路由配置6.2 路由跳转6.3 路由守卫7、状态管理器Vuex7.1 配置...
    99+
    2024-04-02
  • spring 2.0 配置文件
    启用@Aspect aop支持并使用CGLIB代理[@more@]...
    99+
    2023-06-03
  • vue3.0和2.0的区别
    vue3.0和2.0的区别:1、Vue3.0对响应式系统进行了彻底重写替代了Vue2.0的Object.defineProperty方法;2、Vue3.0使用了更多的静态分析和编译优化,打包后的文件更小;3、Vue3.0相较于2.0有更快的...
    99+
    2023-07-25
  • ansible python api 2
     最近想利用python来调用anbile来实现一些功能,发现ansible的api已经升级到了2.0,使用上比以前复杂了许多。 这里我参考了官方文档的例子,做了一些整改,写了一个python调用ansible的函数,执行过程中输出执行结果...
    99+
    2023-01-31
    ansible python api
  • jquery3.0和2.0的区别
    随着前端技术的不断发展,jQuery成为了绝大多数Web开发人员的首选框架。当前,jQuery的最新版本为3.0,它和之前的版本之间有着一些重大的区别和改变。因此,本文将详细介绍jQuery 3.0和2.0之间的区别及其对开发者的影响。jQ...
    99+
    2023-05-23
  • OpenGLES 2.0:是否具有gl_VertexID
    在OpenGL ES 2.0中,没有直接的顶点索引变量`gl_VertexID`。`gl_VertexID`是OpenGL中的一个内...
    99+
    2023-10-10
    OpenGLES
  • 什么是Hotspot 2.0? Win10 Mobile预览版14327已支持WiFi Hotspot 2.0
    此前我们预告过Win加该功能,在WiF 什么是Hotspot 2.0呢? Hotspot 2.0是由Wi-Fi联盟和无线带宽联盟开发,旨在实现移动网络和Wi-Fi网络之间的无缝流量切换,它不需要额外的用户注册和验证。H...
    99+
    2023-05-20
    Win10 预览版14327 hotspot
  • Vue 2.0有哪些变化
    本篇内容介绍了“Vue 2.0有哪些变化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!高层级的变化模板解析...
    99+
    2024-04-02
  • Buffalo 2.0如何整合spring
    小编给大家分享一下Buffalo 2.0如何整合spring,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Spring是当前最流行的轻量级容器,Buffalo对它进行了支持。Spring中任意一个配置过的bean, 都可以...
    99+
    2023-06-03
  • python调用api接口教程(Python调用ChatGPT-3.5-API)
    要在Python中调用ChatGPT-3.5-API,您需要使用Python的请求库和json库来发送HTTP请求和处理返回的JSO...
    99+
    2023-09-22
    python
  • Appium Python API 中文
    Appium_Python_Api文档1.contextscontexts(self):    Returns the contexts within the current session.     返回当前会话中的上下文,使用后可以识别...
    99+
    2023-01-31
    中文 Appium Python
  • python调用java API
    使用JPype来让python调用java API。 JPype的下载地址:https://pypi.python.org/pypi/JPype1 JPype的帮助文档:http://jpype.readthedocs.io/e...
    99+
    2023-01-31
    python java API
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作