Skip to content
home@dennisPersonal Website of Dennis Plöger
  • Home
  • Blog
  • Artist
  • Impressum
  • Datenschutzerklärung

Better Ansible Playbook Output in Teamcity

25. April 2019

We’re using some good amount of Ansible playbooks in my company and we use TeamCity as our main CI service.

On TeamCity, our playbook output looks like this:

Ansible Playbook output without the plugin

🤨🙁😞

I don’t know about you, but I quite dislike the Ansible playbook default output. It’s quite packed and big and it’s hard to check where Ansible is currently working on.

TeamCity has a very nice feature called Build Script Interaction, where you format your stdout according to specific standards so that it can be interpreted by TeamCity.

This way you can open and close blocks, set variables, mark errors, etc.

Did I say „open and close blocks“? Yes I did and this would make the perfect feature for Ansible playbooks, right?

Luckily, Ansible can be extended by plugins and the Ansible output is handled by so called callback plugins. Callback plugins react to certain events (check out the class definition of CallbackBase for a list of available methods to override) and some of those events regard the start of plays or tasks.

So I extended the original default output plugin and override the specific methods for plays and tasks.

And with this plugin in place, the logs now look like this:

Ansible Playbook output with the plugin

😍😍😍

All nicely structured and TeamCity can even calculate the times of plays and tasks!

Check it out on GitHub:

dodevops / ansible-teamcity-callback

An Ansible callback plugin to output suitable for TeamCity

Ansible Callback Plugin for Teamcity

Introduction

This Ansible callback plugin formats the output of an Ansible playbook, so that it can be better interpreted by TeamCity.

Why?

Because Ansible logs in Teamcity look like this:

Log without this plugin

With this plugin in place, they look like this:

Log with this plugin

All plays and tasks are nicely put into their own blocks allowing TeamCity to collapse them and calculate the different times.

Usage

You have different options of using this plugin:

  • In your playbook repository
    • Create a folder named callback_plugins directly where your playbook lives
    • Download the file teamcity.py and place it in inside the callback_plugins directory
  • Somewhere else
    • Download or clone the plugin, unzip it and place the folder somewhere accessible (i.e. use the Teamcity tools feature to distribute the plugin to all agents)
    • Use the following environment variable to tell Ansible where to find your plugin:
      export ANSIBLE_CALLBACK_PLUGINS=

Set the following environment…

View on GitHub

Originally published to dev.to

PDF

Calendar

März 2023
M D M D F S S
« Apr    
 12345
6789101112
13141516171819
20212223242526
2728293031  

Archive

  • April 2021
  • März 2021
  • September 2020
  • Dezember 2019
  • November 2019
  • Oktober 2019
  • Juli 2019
  • Juni 2019
  • Mai 2019
  • April 2019
  • März 2019
  • September 2018
  • August 2018
  • Juli 2018
  • März 2018
  • Januar 2018
  • Dezember 2017
  • September 2017
  • März 2017
  • Februar 2017
  • Januar 2017
  • August 2016
  • Mai 2016
  • Dezember 2015
  • November 2015
  • August 2015
  • März 2015
  • Dezember 2014
  • September 2014
  • August 2014
  • Juli 2014
  • Februar 2014
  • Oktober 2013
  • September 2013
  • August 2013
  • Juli 2013
  • Juni 2013
  • Mai 2013
  • April 2013
  • November 2012
  • Oktober 2012
  • September 2012
  • August 2012
  • Juni 2012
  • Mai 2012
  • März 2012
  • Februar 2012
  • Januar 2012
  • November 2011
  • Juli 2011
  • Juni 2011
  • März 2011
  • Februar 2011
  • Januar 2011
  • Dezember 2010
  • November 2010
  • April 2010
  • Februar 2010

Kategorien

  • Allgemein

Neueste Beiträge

  • Github Action for the Godot Asset library
  • Announcing EgoVenture
  • The third installment of my learning project
  • So I released an Adventure Game
  • Feather > Sword

Schlagwörter

administration apache blog commit configuration configuration management development dhcp django documentation dokuwiki extension html ip java javascript keyboard lbows linux log migration netdot networks news php plugin printer python rest server shortcut skd sles soap social ssh survey twitter ubuntu udev vmware website zimbra zimlet zimlets

Meta

  • Anmelden
  • Beitrags-Feed (RSS)
  • Kommentare als RSS
  • WordPress.org

Copyright (c) Dennis Plöger | Theme by ThemeinProgress | Proudly powered by WordPress

Zum Ändern Ihrer Datenschutzeinstellung, z.B. Erteilung oder Widerruf von Einwilligungen, klicken Sie hier: Einstellungen