Files
ansible-runner/callback_plugins/task_logger.py
Ronny 41530c583c
All checks were successful
🏃‍♂️Run Ansible / install_ansible (push) Successful in 5m25s
add callback plugin
2025-12-17 09:27:31 +00:00

68 lines
2.4 KiB
Python

from ansible.plugins.callback import CallbackBase
from ansible.utils.color import colorize_message, hostcolor
from datetime import datetime
class CallbackModule(CallbackBase):
CALLBACK_VERSION = 2.0
CALLBACK_NAME = 'task_logger'
CALLBACK_TYPE = 'stdout'
CALLBACK_NEEDS_WHITELIST = False
def __init__(self):
super(CallbackModule, self).__init__()
self.task_count = 0
self.start_time = datetime.now()
def v2_playbook_on_start(self, playbook):
self._display.display("\n" + "="*80, color='blue')
self._display.display("PLAYBOOK STARTED", color='blue')
self._display.display("="*80 + "\n", color='blue')
def v2_playbook_on_play_start(self, play):
self._display.display("\n" + "-"*80, color='cyan')
self._display.display(f"PLAY: {play.name}", color='cyan')
self._display.display("-"*80 + "\n", color='cyan')
def v2_runner_on_start(self, host, task):
self.task_count += 1
task_name = task.name or "unnamed task"
self._display.display(
f"[{self.task_count}] TASK: {task_name}",
color='blue'
)
def v2_runner_on_ok(self, result, **kwargs):
self._display.display(f" ✓ OK\n", color='green')
def v2_runner_on_failed(self, result, ignore_errors=False, **kwargs):
task_name = result.task_name or "unnamed task"
self._display.display(
f" ✗ FAILED: {task_name}\n",
color='red'
)
def v2_runner_on_skipped(self, result, **kwargs):
self._display.display(f" ⊘ SKIPPED\n", color='yellow')
def v2_runner_on_unreachable(self, result):
self._display.display(
f" ✗ UNREACHABLE\n",
color='red'
)
def v2_playbook_on_stats(self, stats):
self._display.display("\n" + "="*80, color='blue')
self._display.display("PLAYBOOK FINISHED", color='blue')
self._display.display("="*80, color='blue')
# Statistiken anzeigen
hosts = sorted(stats.processed.keys())
for host in hosts:
summary = stats.summarize(host)
self._display.display(
f"\n{host}: ok={summary['ok']} changed={summary['changed']} "
f"failed={summary['failures']} skipped={summary['skipped']} "
f"unreachable={summary['unreachable']}",
color='cyan'
)
self._display.display("\n")