首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从Ansible python playbook api获取远程标准输出

Ansible是一种自动化工具,它可以简化IT基础架构的配置管理、应用程序部署和任务自动化。Ansible使用Python编写,提供了丰富的API,其中包括Ansible Python Playbook API,可以用于获取远程主机的标准输出。

要从Ansible Python Playbook API获取远程主机的标准输出,可以按照以下步骤进行操作:

  1. 导入所需的模块和类:
代码语言:txt
复制
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.inventory.manager import InventoryManager
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
  1. 创建一个DataLoader对象,用于加载Ansible的配置和变量文件:
代码语言:txt
复制
loader = DataLoader()
  1. 创建一个InventoryManager对象,用于管理Ansible的主机清单:
代码语言:txt
复制
inventory = InventoryManager(loader=loader, sources='inventory.ini')

其中,'inventory.ini'是Ansible主机清单文件的路径,可以根据实际情况进行修改。

  1. 创建一个VariableManager对象,用于管理Ansible的变量:
代码语言:txt
复制
variable_manager = VariableManager(loader=loader, inventory=inventory)
  1. 创建一个PlaybookExecutor对象,用于执行Ansible的Playbook:
代码语言:txt
复制
playbook_executor = PlaybookExecutor(
    playbooks=['playbook.yml'],  # 指定要执行的Playbook文件路径
    inventory=inventory,
    variable_manager=variable_manager,
    loader=loader
)

其中,'playbook.yml'是要执行的Playbook文件的路径,可以根据实际情况进行修改。

  1. 执行Playbook并获取远程主机的标准输出:
代码语言:txt
复制
playbook_executor.run()
results = playbook_executor._tqm._stdout_callback.results

通过results变量,可以获取每个任务的执行结果,包括标准输出等信息。

需要注意的是,上述代码中的路径和文件名需要根据实际情况进行修改。此外,还需要确保Ansible的相关配置文件和Playbook文件的正确性。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云弹性伸缩(AS)、腾讯云容器服务(TKE)等。你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)获取更多关于这些产品的详细信息和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Saltstack使用说明

_handle_aes方法,将结果写进文件中 salt.client.LocalClient.cmd_cli通过轮询获取执行结果,将结果输出到终端 与ansible区别 saltstack与ansible...相同点: 都是基于python开发,可以部署到不同的系统环境中 具有较好的二次开发性,便于实现个性定制 ansibleplaybook和saltstack的state都是遵循yaml格式 执行返回结果都是...json格式,容易理解 不同点: saltstack的master与minion之间是通过ZeroMQ来传输数据,而ansible是通过标准SSH进行数据传输,saltstack的响应速度要比ansible...,ZeroMQ本身数据传输不支持加密,saltstack可以通过使用AES数据加密方法来对数据进行加密传输,但minion以守护进程的方式运行在远程主机,容易暴露 ansible则使用标准SSH进行连接...,不需要在远程主机上启动守护进程,而且标准SSH数据传输就是加密传输,安全方面ansible要更胜一筹 ansible远程主机之间都是通过标准SSH进行连接的,远程主机只需要运行SSH进程就可以进行操作

36530

探索ansible执行原理

ansible官网文档的Python API处也是介绍的这个接口: Python API 。...整体的流程图 有了上面的认识,runner之上的东西就比较好理解了,都是业务相关的东西,比如:收集CLI(命令行界面)的数据、获取playbook.yml中的数据,以及对应的解析等等。...再继续探索runner下层 上面已经探索了ansible-playbook在执行时的流程,这里再继续深入了解一下,想看看ansible到底是如何执行的。...ansible默认是以兼容的ssh来进行远程命令执行的,执行的方法就是,通过subprocess,来执行ssh和已经传输到远程服务器的可执行的python文件,通过PIPE的方式把执行结果输出回来,输出的...大概就是这么个过程,只是大致的看了下整个的执行过程,很多地方复杂的逻辑都忽略了,最后的通过subprocess的方式执行ssh远程操作,并把结果通过PIPE输出回来不是特别理解其原理。

1.6K20
  • pythonAnsible模块的Playbook的具体使用

    在这一节中,我们将循序渐进地介绍Ansible中的Playbook,我们将首先介绍Playbook的定义,然后介绍如何使用Playbook完成远程服务器部署,之后详细介绍Playbook的基本语法,使用...ansible-playbook命令的–list-hosts选项输出的结果如下: [root@python ~]# ansible-playbook all.yml --list-hosts ?...Facts变量是Ansible执行远程部署之前远程服务器中获取的系统信息,包括服务器的名称、IP地址、操作系统、分区信息、硬件信息等。Facts变量可以配合Playbook实现更加个性化的功能需求。...Ansible 2.0开始,Ansible支持名为free的任务执行策略,允许执行较快的远程服务器提前完成Play的部署,不用等待其他远程服务器一起执行task。...这个变量是Facts变量,是Ansible在执行Playbook之前远程服务器获取到的信息。因此,我们不需要定义,直接使用即可。

    4.1K10

    自动化运维利器Ansible要点汇总

    协议对设备进行管理; 配置简单、功能强大、扩展性强; 支持API及自定义模块,可通过Python轻松扩展; 通过Playbooks来定制强大的配置、状态管理; 幂等性:一种操作重复多次结果相同 Ansible...部署Ansible的控制机需要python 2.7及以上,需要安装paramiko模块、PyYAML、Jinja2、httplib2等模块,若被管节点为windows,则需要有powershell3并制授权远程管理...Ansible完成任务的两种方式,一种是Ad-Hoc,就是ansible命令,另一种就是Ansible-playbook,也就是ansible-playbook命令。...、raw、script执行shell命令 copy:复制文件到远程主机,可以改权限等 file设置文件目录属性等 fetch 远程某主机获取文件到本地 service 服务程序管理,启动停止重启服务等操作...管理windows   环境要求Ansible管理主机Linux系统,远程主机的通信方式也由SSH变更为PowerShell,同时管理机必须预安装Python的Winrm模块。

    2K30

    Ansible高级用法(运维开发篇)

    自动化任务简介 假设我们要在10台linux服务器上安装一个nginx服务,手动是如何做的?...ansible配置 ansiblepython中的一套模块,系统中的一套自动化工具,可以用作系统管理,自动化命令等任务 ansible优势 # 1.ansiblepython中的一套完整的自动化执行任务模块...我们最先展示的并非那强大的集配置,部署,自动化于一身的playbook.而是如何初始化. 远程连接概述 在我们开始前要先理解Ansible如何通过SSH与远程服务器连接是很重要的....": "pong" } Ansible会像SSH那样试图用你的当前用户名来连接你的远程机器.要覆写远程用户名,只需使用’-u’参数....文件不会真正去执行,而是模拟执行一遍,然后输出本次执行会对远程主机造成的修改 -e EXTRA_VARS, --extra-vars=EXTRA_VARS # 设置额外的变量如:key=value

    3.5K52

    学习如何安装Ansible和运行Playbooks

    例如,一个playbook可能有一个任务,它为服务器设置一个配置文件并注入一些变量。应编写剧本,以便Ansible可以获取模板配置文件,将其与实际文件进行比较,并仅在必要时创建/更新它。...shell - 在节点中执行命令 mysql_db - 远程主机添加或删除MySQL数据库 mysql_user - 在MySQL数据库中添加或删除用户 postgresql_db - 远程主机添加或删除...PostgreSQL数据库 postgresql_user - PostgreSQL数据库添加或删除用户(角色) fetch - 远程节点获取文件 template - 将文件模板发送到远程服务器...注意我们如何指定使用特定用户(-u root)并强制Ansible提示我们输入密码(-ask-pass),因为我们还没有设置密钥身份验证: ansible-playbook --ask-pass -u...*:ALL state=present 使用以下命令控制计算机运行playbookansible-playbook setup_webserver.yml --ask-become-pass 当这个剧本完成后

    5K10

    一文详解 Ansible 自动化运维!

    Azure、Cisco、HP、VMware、Twitter 等大公司接纳并投入使用; 二、Ansible的角色 使用者:如何使用 Ansible 实现自动化运维?...,同时还提供丰富的 API语言接口,如PHP、Python、PERL 等多种流行语言,基于 PUBLIC/PRIVATE,AnsibleAPI 调用的方式运行; Ad-Hoc 命令集:Users直接通过...、循环插件、变量插件、过滤插件等,该功能不太常用; API:供第三方程序调用的应用程序编程接口; Ansible:该部分图中表现得不太明显,组合 Inventory、API、Modules、Plugins...1)通过YUM安装Ansible 可以自行互联网上直接下载Ansible所需软件包,本篇博客提供安装Ansible自动化运维工具所需的依赖软件包 [root@centos01 ~]# cd /mnt/...获取帮助--> root@all (2)[f:5]$ cd web <!

    2.9K30

    Ansible自动化运维学习笔记2

    ); 其实这些被收集到的远程主机信息会保存在对应的变量中,当我们要使用这些信息时就可以获取对应的变量; 其实这些远程主机的变量信息不仅仅能够用于输出,我们通常会获取到信息以后对这些信息的值进行判断,判断是否符合我们的要求然后再执行下一步动作...“ansible_distribution” 表示远程主机的系统发行版,其对应的值可以看出local主机的系统发行版为centos “ansible_distribution_version” 表示远程主机的系统版本号...,其对应的值与 “ansible_distribution” 的值可以看出local主机的系统版本为centos7.4 “ansible_ens35” 表示远程主机ens35网卡的相关信息,细心如你一定也发现了..."local facts"信息也会被收集,我们可以通过”ansible_local”关键字过滤远程主机的”local facts”信息 #获取本地自定义信息 (默认目录) ansible local...在setup模块的示例中我们可以通过"ansible_memory_mb"关键字获取远程主机的内存信息,其实在playbook中也可以直接调用”ansible_memory_mb”变量名; --- -

    2.3K10

    Ansible自动化运维学习笔记2

    ); 其实这些被收集到的远程主机信息会保存在对应的变量中,当我们要使用这些信息时就可以获取对应的变量; 其实这些远程主机的变量信息不仅仅能够用于输出,我们通常会获取到信息以后对这些信息的值进行判断,判断是否符合我们的要求然后再执行下一步动作...“ansible_distribution” 表示远程主机的系统发行版,其对应的值可以看出local主机的系统发行版为centos “ansible_distribution_version” 表示远程主机的系统版本号...,其对应的值与 “ansible_distribution” 的值可以看出local主机的系统版本为centos7.4 “ansible_ens35” 表示远程主机ens35网卡的相关信息,细心如你一定也发现了..."local facts"信息也会被收集,我们可以通过”ansible_local”关键字过滤远程主机的”local facts”信息 #获取本地自定义信息 (默认目录) ansible local...在setup模块的示例中我们可以通过"ansible_memory_mb"关键字获取远程主机的内存信息,其实在playbook中也可以直接调用”ansible_memory_mb”变量名; --- -

    3K51

    运维必备 | ansible 自动化运维工具之变量的定义与调用

    ); 其实这些被收集到的远程主机信息会保存在对应的变量中,当我们要使用这些信息时就可以获取对应的变量; 其实这些远程主机的变量信息不仅仅能够用于输出,我们通常会获取到信息以后对这些信息的值进行判断,判断是否符合我们的要求然后再执行下一步动作..."ansible_distribution" 表示远程主机的系统发行版,其对应的值可以看出local主机的系统发行版为centos "ansible_distribution_version" 表示远程主机的系统版本号...,其对应的值与 "ansible_distribution" 的值可以看出local主机的系统版本为centos7.4 "ansible_ens35" 表示远程主机ens35网卡的相关信息,细心如你一定也发现了..."local facts"信息也会被收集,我们可以通过"ansible_local"关键字过滤远程主机的"local facts"信息 #获取本地自定义信息 (默认目录) ansible local...描述: 在setup模块的示例中我们可以通过"ansible_memory_mb"关键字获取远程主机的内存信息,其实在playbook中也可以直接调用"ansible_memory_mb"变量名; --

    1.2K10

    开源运维自动化工具 Ansible 详解

    Cisco、HP、VMware、Twitter等大公司接纳并投入使用; 二、Ansible的角色 使用者:如何使用Ansible实现自动化运维?...语言接口,如PHP、Python、PERL等多种流行语言,基于PUBLIC/PRIVATE,AnsibleAPI调用的方式运行; Ad-Hoc命令集:Users直接通过Ad-Hoc命令集调用Ansible...、循环插件、变量插件、过滤插件等,该功能不太常用; API:供第三方程序调用的应用程序编程接口; Ansible:该部分图中表现得不太明显,组合Inventory、API、Modules、Plugins...1)通过YUM安装Ansible 可以自行互联网上直接下载Ansible所需软件包,本篇博客提供安装Ansible自动化运维工具所需的依赖软件包,网盘链接:[链接: https://pan.baidu.com...获取帮助--> root@all (2)[f:5]$ cd web <!

    3.8K40

    003.Ansible基础使用

    ’"模块参数; 3 -k,--ask-pass SSH:认证密码; 4 -K,ask-sudo=pass sudo:用户的密码(--sudo时使用); 5 -o,--one-line:标准输出至一行...; 6 -s,--sudo:相当于Linux系统下的sudo命令; 7 -t DIRECTORY,--tree=DIRECTORY:输出信息至DIRECTORY目录下,结果文件以远程主机命名;...--list-tasks:列出所有即将被执行的任务; 9 --skip-tags=SKIP_TAGS:跳过指定的tags任务; 10 --start-at-task=START_AT_TASK:第几条任务开始执行...基本语法: 1 ansible-playbook [options] playbook.yml [playbook2 ...] 2.6 ansible-vault ansible-vault主要用于配置文件加密...myhost2[0] -m ping 2 [root@manage ~]# ansible myhost2[0:1] -m ping 提示:Ansible底层基于PythonAnsible也支持获取数组相应值

    1.4K20

    以Chef和Ansible为例快速入门服务器配置

    因此,当你开始使用配置工具(如Chef或Ansible)时,学习如何使用基本的shell脚本也会为你带来很多好处。 你可能会问自己,为什么在shell脚本已经可以完成所有工作的同时还要学习配置工具?...这种比喻有点令人感到困惑,于是我决定去看一下其他工具,如AnsibleAnsible文档的第一页介绍了“playbook”的概念,而playbook包含一系列“play”。 那么,这些问题很重要吗?...你已经编写了MySQL主服务器的配置文件,但是你不太确定如何配置MySQL服务器的内部DNS地址。这个时候配置管理就派上用场了。...切勿以明文形式存储API密钥或凭证。 可以使用Secret管理解决方案来存储这些数据,然后将其绑定到配置工具中。...我们之前Packer的输出中复制AMI ID,并粘贴到Terraform代码中。这不是一个可维护的解决方案,因为AMI ID会经常发生变化,而且我们不应该在每次发生变化时都要将更改推送到存储库中。

    2.5K30

    1分钟了解Ansible企业应用场景

    :老牌自动化工具,四者中最重的自动化工具,ruby语言实现 saltstack:即puppet之后的新兴运维工具,当下 运维必备开发技能的python语言实现 ansible:最新出现的无client客户端工具...1.1 流程化、标准化是自动化的前提 在整个2016年,运维的工作重心和难点,很大一部分精力都是树立标准规范,对抗个人原则。...正确的姿势如图: glaxy 下载role 修改 roles 使用 对的,就是这么简单 2.2 Ansible 与发布 ?...2.5 Ansible 与 web 化 ? 如图,是我们当下使用的平台。在 Ansible 的调用上也并不优雅。主要是API接口不够完善,各模块的使用场景并非每个人都很熟悉。...Ansible OR Shell ? ? 使用 Ansible 工具最大的好处,我依然认为是能够打平整个团队的整体输出质量。 ?

    2.4K41

    运维自动化工具ansible

    该功能不常用 API:供第三方程序调用的应用程序编程接口 ANSIBLE:组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具...Ansible命令执行来源: USER,普通用户,即SYSTEM ADMINISTRATOR CMDB(配置管理数据库)API 调用 PUBLIC/PRIVATE CLOUD API调用 USER->...python-babel python-crypto tar xf ansible-1.5.4.tar.gz cd ansible-1.5.4 python setup.py build python...ansible-pull 推送命令至远程,效率无限提升,对运维要求较高 Ansible-playbook ansible-playbook hello.yml 例子: vim hello.yml -...模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致 每个task都应该有其name,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。

    3.4K10

    云原生之 Ansible 篇(一)

    playbook 执行playbook命令 playbook基本语法 任务列表 幂等性 playbook的handlers与notify 一、Ansible handlers的作用 二、如何配置handlers...ping 模块 ping是测试远程节点的SSH连接是否就绪的常用模块,但是它并不像Linux命令那样简单地ping一下远程节点,而是先检查能否通过SSH登陆远程节点,再检查其Python版本能否满足要求...常见的ansible-playbook的使用方法如下: 最简单的使用方法: ansible-playbook copyDemo.yaml 我们还可以使用以下命令查看输出的细节: ansible-playbook...而工作中,更多的时候,我们不是在编写playbook,就是在编写playbook的路上。所以,接下来我重点说说如何写这个playbook,也就是playbook的基本语法。...我们在执行Ansible Ad-Hoc或者ansible-playbook的时候,在输出中都会有一个changed字段,比如: 192.168.1.3 : ok=2

    2.3K10

    ansible-playbook实现自动部署KVM及安装python3的详细教程

    1、何为ansible-playbook playbookansible用于配置,部署,和管理被控节点的剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态...2、ansible-playbook编写格式 playbook完全居于yaml文件格式。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写....(可以将你的ide的tab按键输出替换成4个空格); 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可; #表示注释。...to remote_host #本地向远程服务器拷贝python安装文件家 copy: src={{python_workdir}} dest=/home/ - name: create...[root@localhost ~] ansible-playbook test.yaml -e "hostname=X.X.X.X user=XXXX" 总结 到此这篇关于ansible-playbook

    1.3K40
    领券