[ansible] Alternative au logger par défaut

Discussions autour des problématiques d'administration système
Répondre
-W.-
Messages : 45
Enregistré le : dim. mars 22, 2020 5:26 pm
Localisation : Allier

[ansible] Alternative au logger par défaut

Message par -W.- »

Bonjour,

Pour utiliser au quotidien Ansible je me suis quelque fois retrouvé à vouloir plus de logs ou des logs plus faciles à lire.

Il y a pour cela des solutions, et comme des tonnes de choses c'est prévu dans Ansible. Voici un petit tutoriel pour installer un autre logger (Licence MIT). Le présentation et les temps d'exécution sont très pratiques à lire selon mes goûts :)

Les copies d'écran présentes sur github parlent d'elle même.

L'installation est très simple. Tout d'abord cloner le projet

Code : Tout sélectionner

(william@workstation):~$ cd workspace/various-projects/

(william@workstation):various-projects$ git clone git@github.com:octplane/ansible_stdout_compact_logger.git
Clonage dans 'ansible_stdout_compact_logger'...
remote: Enumerating objects: 54, done.
remote: Counting objects: 100% (54/54), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 285 (delta 16), reused 44 (delta 13), pack-reused 231
Réception d'objets: 100% (285/285), 621.33 Kio | 108.00 Kio/s, fait.
Résolution des deltas: 100% (120/120), fait.
Ensuite vous devais ajouter le nouveau logger en callback dans votre fichier ansible.cfg

Il est important de garder en te que l'e fichier ansible.cfg peut être global à votre environnement ou local à l'endroit d’où vous lancez les playbooks. Il est donc facile d'activer ce plugins ou pas pour vos différents espaces de travail. Par exemple en gérant votre ansible.cfg avec Ansible :twisted:

Dans mon cas j'ajoute ceci à la finde la section [defaults] du fichier

Code : Tout sélectionner

[defaults]
callback_plugins= /home/william/workspace/various-projects/ansible_stdout_compact_logger/callbacks
stdout_callback = anstomlog
Vous devez juste mettre le bon chemin vers vos plugins selon comment vous les gérez. :idea:

Et voila il n'a plus qu'à tester :)

Voici la sortie dans stdout d'ansible-blaybook concrète sur une de mes VM serveur web de test

Code : Tout sélectionner

ansible-playbook -i inventories/production/web.yml playbooks/deploy-roles.yml 
[12:35:23] Gathering Facts | web | SUCCESS | 1.27s
[12:35:24] dft-sysop-playbook-logging : include | web | SKIPPED | 29ms
[12:35:24]   ↳ dft-os-fstab : DFT - Setup /etc/fstab | web | CHANGED | 636ms
[12:35:25]   ↳ dft-os-base : DFT - Install OS base packages | web | SUCCESS | 768ms
[12:35:26]   ↳ dft-os-base : DFT - Setup hostname (local connection) | web | SUCCESS | 471ms
[12:35:26]   ↳ dft-os-base : DFT - Add hostname to /etc/hosts | web | SUCCESS | 323ms
[12:35:26]   ↳ dft-os-base : DFT - Install locales | web | SUCCESS | 632ms
[12:35:27]   ↳ dft-os-base : DFT - Configure locales | web | SUCCESS | 316ms
[12:35:27]   ↳ dft-os-base : DFT - Install timezone data | web | SUCCESS | 647ms
[12:35:28]   ↳ dft-os-base : DFT - Configure timezone (non local connection) | web | SUCCESS | 436ms
[12:35:28]   ↳ dft-os-base : DFT - Configure timezone (local connection) | web | SKIPPED | 30ms
[12:35:29]   ↳ dft-os-base : DFT - Create local groups | web | SKIPPED | 28ms
[12:35:29]   ↳ dft-os-base : DFT - Update root password when the defined password | web | SKIPPED | 28ms
[12:35:29]   ↳ dft-os-base : DFT - Update root password with random value when no password is defined | web | CHANGED | 337ms
[12:35:29]   ↳ dft-os-base : DFT - Create local users (using password hash) | web | SKIPPED | 28ms
[12:35:29]   ↳ dft-os-base : DFT - Create local users (plaintext password) | web | SKIPPED | 30ms
[12:35:29]   ↳ dft-os-base : DFT - Copy SSH keys to user directories | web | SKIPPED | 29ms
[12:35:29]   ↳ dft-network-base : DFT - Install network base packages | web | SUCCESS | 634ms
[12:35:30]   ↳ dft-network-base : DFT - Setup network/interfaces | web | SUCCESS | 433ms
[12:35:30]   ↳ dft-network-base : DFT - Install ntp | web | SUCCESS | 641ms
[12:35:31]   ↳ dft-network-base : DFT - Configure NTP client | web | SUCCESS | 435ms
[12:35:31]   ↳ dft-network-base : DFT - Install dhcp client | web | SUCCESS | 624ms
[12:35:32]   ↳ dft-network-base : DFT - Generate dhclient configuration | web | SUCCESS | 406ms
[12:35:32]   ↳ dft-network-base : DFT - Configure DNS resolver | web | SKIPPED | 27ms
[12:35:32]   ↳ dft-os-banner : DFT - Install software used to output banner (figlet and toilet) | web | SUCCESS | 634ms
[12:35:33]   ↳ dft-os-banner : DFT - Install /etc/issue | web | SKIPPED | 31ms
[12:35:33]   ↳ dft-os-banner : DFT - Install /etc/issue.net | web | SKIPPED | 28ms
[12:35:33]   ↳ dft-os-banner : DFT - Install /etc/motd | web | SKIPPED | 29ms
[12:35:33]   ↳ dft-os-banner : DFT - Install /etc/update-motd.d content | web | SUCCESS | 1.27s
[12:35:34]   ↳ dft-sysop-archive-tar : DFT - Install tar | web | SUCCESS | 636ms
[12:35:35]   ↳ dft-sysop-archive-tar : DFT - Create script target directory | web | SUCCESS | 244ms
[12:35:35]   ↳ dft-sysop-archive-tar : DFT - Deploy tar archiving script | web | SKIPPED | 30ms
[12:35:35]   ↳ dft-sysop-archive-tar : DFT - Add generated tar based archiving scripts to cron table | web | SKIPPED | 30ms
[12:35:35]   ↳ dft-sysop-rsync : DFT - Install rsync | web | SUCCESS | 613ms
[12:35:36]   ↳ dft-sysop-rsync : DFT - Create script target directory | web | SUCCESS | 232ms
[12:35:36]   ↳ dft-sysop-rsync : DFT - Deploy rsync based path (files or folders) synchronization script | web | SKIPPED | 32ms
[12:35:36]   ↳ dft-sysop-rsync : DFT - Add generated rsync based generated scripts to cron table | web | SKIPPED | 27ms
[12:35:36]   ↳ dft-os-lvm2 : DFT - Install LVM2 | web | SUCCESS | 664ms
 | web | SUCCESS | 691ms
[12:35:38] system | -- Play recap --
web                        : ok=24   changed=2    unreachable=0    failed=0  [code]

Je trouve cela un peu plus simple a lire tout de même.  Trois niveau de verbosité sont supportés (avec remise en forme de la sortie donc. Le niveau 4 (-vvvv) retombe sur le logger par défaut d'Ansible.

@+W.

Répondre