博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible (2.4.2.0) API python调用重写 | 适用于 web
阅读量:6886 次
发布时间:2019-06-27

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

https://github.com/hequan2017/zabbix-models/tree/master/ansible_run

只是简单改了一下 能够单独使用。

目录结构

ansible_run/├── callback.py├── exceptions.py├── __init__.py├── inventory.py├── runner.py├── test_inventory.py└── test_runner.py

下面两个是演示文件

先 pip3 install ansible==2.4.2.0 安装

例子

# -*- coding: utf-8 -*-from  runner import AdHocRunner, CommandRunnerfrom  inventory import BaseInventorydef  TestAdHocRunner():        """         以yml的形式 执行多个命令        :return:        """        host_data = [            {                "hostname": "testserver",                "ip": "192.168.10.93",                "port": 22,                "username": "root",                "password": "password",            },        ]        inventory = BaseInventory(host_data)        runner = AdHocRunner(inventory)        tasks = [            {
"action": {
"module": "cron","args": "name=\"sync time\" minute=\"*/3\" job=\"/usr/sbin/ntpdate time.nist.gov &> /dev/null\"" }, "name": "run_cmd"}, {
"action": {
"module": "shell", "args": "whoami"}, "name": "run_whoami"}, ] ret = runner.run(tasks, "all") print(ret.results_summary) print(ret.results_raw)def TestCommandRunner(): """ 执行单个命令,返回结果 :return: """ host_data = [ { "hostname": "testserver", "ip": "192.168.10.93", "port": 22, "username": "root", "password": "password", }, ] inventory = BaseInventory(host_data) runner = CommandRunner(inventory) res = runner.execute('pwd', 'all') print(res.results_command) print(res.results_raw) print(res.results_command['testserver']['stdout'])if __name__ == "__main__": TestAdHocRunner() TestCommandRunner()
from inventory import BaseInventorydef  Test():        """        返回主机信息,组信息,组内主机信息        :return:        """        host_list = [{            "hostname": "testserver1",            "ip": "102.1.1.1",            "port": 22,            "username": "root",            "password": "password",            "private_key": "/tmp/private_key",            "become": {                "method": "sudo",                "user": "root",                "pass": None,            },            "groups": ["group1", "group2"],            "vars": {
"sexy": "yes"}, }, { "hostname": "testserver2", "ip": "8.8.8.8", "port": 2222, "username": "root", "password": "password", "private_key": "/tmp/private_key", "become": { "method": "su", "user": "root", "pass": "123", }, "groups": ["group3", "group4"], "vars": {
"love": "yes"}, }] inventory = BaseInventory(host_list=host_list) print("#"*10 + "Hosts" + "#"*10) for host in inventory.hosts: print(host) print("#" * 10 + "Groups" + "#" * 10) for group in inventory.groups: print(group) print("#" * 10 + "all group hosts" + "#" * 10) group = inventory.get_group('all') print(group.hosts)if __name__ == '__main__': Test()
本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/2056727,如需转载请自行联系原作者
你可能感兴趣的文章
Linux学习-第三节课
查看>>
activemq搭建和使用
查看>>
java语言实现将mysql的linestring、point 数据类型解析成double类型
查看>>
TCP三次握手和四次挥手
查看>>
Nginx动态添加模块
查看>>
WPF和Silverlight概述(1)
查看>>
java笔记:第4章 流程控制
查看>>
《Python从小白到大牛》第8章 控制语句
查看>>
pxe自动安装系统 (linux)
查看>>
cacti关于1000M网卡的监控
查看>>
我的友情链接
查看>>
详解 Spotlight on Unix 监控Linux服务器
查看>>
docker 安装及简单配置
查看>>
关于大数据和古中国的一丝小想法随笔(续)
查看>>
十二年IT职业生涯心得--致我们终将逝去的青春(连载)
查看>>
我的友情链接
查看>>
初学Redis(2)——用Redis作为Mysql数据库的缓存
查看>>
使用Jersey构建图片服务器 有回显图片功能
查看>>
SQL 去重
查看>>
ubuntu 设置静态IP
查看>>