博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible-playbook api 2.0 运行项目
阅读量:4608 次
发布时间:2019-06-09

本文共 4358 字,大约阅读时间需要 14 分钟。

上篇 api 的文章 《》 介绍的是直接将 tasks 直接写在 代码中的,本文介绍 api 运行整个项目

[root@10_1_162_39 host_vars]# cat test1.yaml ---- hosts: 10.1.167.36  gather_facts: false  tasks:    - shell: ifconfig      register: output    - debug: var=output.stdout

hosts 可以配置密码,暂时不知道怎么在代码 host_list 中配置不同的密码

root@10_1_162_39 host_vars]# cat hosts [web]10.1.162.18:322 10.1.167.36:32200 ansible_ssh_port=32200 ansible_ssh_pass=test***

test_api_2.py 如下

#!/bin/env python# -*- coding:utf8 -*-from collections import namedtuplefrom ansible.parsing.dataloader import DataLoaderfrom ansible.vars import VariableManagerfrom ansible.inventory import Inventoryfrom ansible.executor.playbook_executor import PlaybookExecutorloader = DataLoader()variable_manager = VariableManager()inventory = Inventory(loader=loader, variable_manager=variable_manager,host_list='hosts')variable_manager.set_inventory(inventory)passwords=NoneOptions = namedtuple('Options',                     ['connection',                      'remote_user',                      'ask_sudo_pass',                      'verbosity',                      'ack_pass',                       'module_path',                       'forks',                       'become',                       'become_method',                       'become_user',                       'check',                      'listhosts',                       'listtasks',                       'listtags',                      'syntax',                      'sudo_user',                      'sudo'])options = Options(connection='smart',                        remote_user='root',                       ack_pass=None,                       sudo_user='root',                       forks=100,                       sudo='yes',                       ask_sudo_pass=False,                       verbosity=5,                       module_path=None,                         become=True,                        become_method='sudo',                        become_user='root',                        check=None,                       listhosts=None,                       listtasks=None,                        listtags=None,                        syntax=None)# 多个yaml文件则以列表形式playbook = PlaybookExecutor(playbooks=['test1.yaml'],inventory=inventory,              variable_manager=variable_manager,              loader=loader,options=options,passwords=passwords)result = playbook.run()print result

playbook_executor 是不能自定义 callback的,所以输出是标准输出,result 是返回码,0表示全部运行成功,其他代码解释参考上篇文章。

输出

[root@10_1_162_39 host_vars]# python test_api_2.py PLAY [10.1.167.36] *************************************************************TASK [command] *****************************************************************changed: [10.1.167.36]TASK [debug] *******************************************************************ok: [10.1.167.36] => {    "output.stdout": "eno16777736: flags=4163
mtu 1500\n inet 192.168.142.129 netmask 255.255.255.0 broadcast 192.168.142.255\n inet6 fe80::20c:29ff:fe9e:335f prefixlen 64 scopeid 0x20
\n ether 00:0c:29:9e:33:5f txqueuelen 1000 (Ethernet)\n RX packets 54015 bytes 6112394 (5.8 MiB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 5675 bytes 898005 (876.9 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73
mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10
\n loop txqueuelen 1 (Local Loopback)\n RX packets 4 bytes 340 (340.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 4 bytes 340 (340.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nvirbr0: flags=4099
mtu 1500\n inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255\n ether 52:54:00:2b:6f:35 txqueuelen 1000 (Ethernet)\n RX packets 0 bytes 0 (0.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 0 bytes 0 (0.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0"}PLAY RECAP *********************************************************************10.1.167.36 : ok=2 changed=1 unreachable=0 failed=0 0[root@10_1_162_39 host_vars]#

 

转载于:https://www.cnblogs.com/lxmhhy/p/6814394.html

你可能感兴趣的文章
iOS网络-02-数据解析(JSON与XML)
查看>>
python列表求和的几种等效电路
查看>>
Luogu P3393 逃离僵尸岛
查看>>
Flatten Binary Tree to Linked List
查看>>
Edit Distance
查看>>
软件工程第一次作业补充
查看>>
N76E003---输入捕获
查看>>
poj 1094 Sorting It All Out(拓扑排序)
查看>>
acdream B - 郭式树 (水题 卡cin,cout, 卡LL)
查看>>
BMP图像格式
查看>>
python的匿名函数lambda解释及用法
查看>>
c#遍历Dictionary使用KeyValuePair
查看>>
defineProperties属性的运用==数据绑定
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
快速入门
查看>>
Mybatis通过ID查询 && 通过name模糊查询
查看>>
发送邮件
查看>>