之前已经写过一篇文章了手把手教你在python中运行ansible-playbook
今天整理一下,把调用ansible的方法一并发出来。
这里特别要注意的是:ansible的代码一直在重构,每个版本的调用方式都不一样,以下代码仅限于ansible 2.8,关于其他版本,请自行百度
另外,本人正在做一个ansible的可视化项目,有兴趣的朋友可以给我留言,一起做!
# !/usr/bin/env python
import json
import shutil
from collections import namedtuple
from ansible.parsing.dataloader import DataLoader
from ansible.vars.manager import VariableManager
from ansible.inventory.manager import InventoryManager
from ansible.playbook.play import Play
from ansible.executor.task_queue_manager import TaskQueueManager
from ansible.executor.playbook_executor import PlaybookExecutor
from ansible.plugins.callback import CallbackBase
import ansible.constants as C
from ansible import context
from optparse import Values
from ansible.utils.sentinel import Sentinel
class ResultCallback(CallbackBase):
def __init__(self, *args, **kwargs):
# super(ResultsCollector, self).__init__(*args, **kwargs)
self.host_ok = {
}
self.host_unreachable = {
}
self.host_failed = {
}
def v2_runner_on_unreachable(self, result):
self.host_unreachable[result._host.get_name()] = result
def v2_runner_on_ok(self, result, *args, **kwargs):
self.host_ok[result._host.get_name()] = result