
Splunk est une plateforme qui permet de collecter, d'indexer, d’analyser et de visualiser les données en provenance de diverses sources. Splunk se charge de les analyser et de les transformer en informations exploitables.
Voyons comment installer et configurer splunk pour y envoyer les résultats de nos playbooks Ansible.
Installation de Splunk
Splunk met à disposition une version de démonstration de 60 jours de sa solution splunk Entreprise.
Il faut dans un premier temps s'enregistrer sur le site de Splunk pour obtenir les commandes de téléchargement des packages.

Une fois connecté, cliquez sur [Download] du tar.gz et annuler le de suite. Dans cet écran vous pouvez récupérer la commande de téléchargement à exécuter sur votre machine Linux.
wget -O /tmp/splunk-9.0.0-6818ac46f2ec-Linux-x86_64.tgz "https://download.splunk.com/products/splunk/releases/9.0.0/linux/splunk-9.0.0-6818ac46f2ec-Linux-x86_64.tgz"Maintenant installons splunk. Créons dans un premier temps le user splunk
useradd -d /opt/splunk -m -g splunk splunksudo useradd -d /opt/splunk -m -g splunk splunksudo su - splunkOn peut maintenant décompresser l'archive
tar xvfz /tmp/splunk-9.0.0-6818ac46f2ec-Linux-x86_64.tgz -C /optDémarrons Splunk :
/opt/splunk/bin/splunk start --accept-licenseSplunk vous demandera un nom pour le compte admin et son mot de passe. Par
exemple admin et admin123!.
Normalement Splunk à démarrer. Il suffit de vérifier que le port 8000 est ouvert.
netstat -tlnp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN 3558/splunkdtcp 0 0 0.0.0.0:8191 0.0.0.0:* LISTEN 3727/mongodtcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 3558/splunkdtcp 0 0 127.0.0.1:8065 0.0.0.0:* LISTEN 3983/python3.7Configuration de l'Event Collector Http
Désormais passons à la configuration des collecteurs. Il faut se rendre sur le site avec l'adresse suivante : http://localhost:8000

Entrez le compte admin avec le mot de passe que vous avez défini précédemment.

Allez dans le menu Paramètres > Données > Entrées de Données. Cliquez ensuite, sur [+Ajouter Nouveau] au niveau de collecteur d'événements HTTP.
Dans le premier écran, il faut juste entrer un nom, ansible par exemple. Cliquer sur [Suiv].
Laisser sourceType sur Automatique. Prenez l'index Main et cliquez sur
[Résumé] puis [Soumettre]
Si vous retournez sur l'écran de type collecteur d'événements HTTP vous devriez retrouver votre collecteur ansible. Mais à droite le status est à désactiver. Il faut activer le collecteur.
Revenez à l'écran Collecteur de Données HTTP et cliquez sur paramètres globaux. Désactiver le SSL et Cliquez sur [Activé] puis enregistrer.

Si vous cliquez dessus vous devriez voir ceci.

On peut vérifier que le port 8088 est bien en écoute :
netstat -tlnp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 3558/splunkdtcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN 3558/splunkdtcp 0 0 0.0.0.0:8191 0.0.0.0:* LISTEN 3727/mongodtcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 3558/splunkdtcp 0 0 127.0.0.1:8065 0.0.0.0:* LISTEN 3983/python3.7Il est bien là maintenant.
Activation du Callback splunk Ansible
Le plugin de callback splunk fait partie de la collection community.general. Si elle n'est pas encore installée, alors faites le :
ansible-galaxy collection install community.generalMaintenant ajoutons le à notre configuration Ansible. Éditer votre fichier
ansible.cfg et Ajoutez ces lignes :
[defaults]
callback_whitelist = community.general.splunkcallbacks_enabled = community.general.splunkDans votre fenêtre terminal il faut définir le token et l'url de splunk :
export SPLUNK_AUTHTOKEN=4e33f2f9-faa8-4cd8-befe-d21f693e63b6export SPLUNK_URL=http://localhost:8088/services/collector/Maintenons écrivons un simple playbook qui ping localhost :
---- hosts: localhost gather_facts: false
tasks: - name: test splunk ansible.builtin.ping:On l'exécute :
ansible-playbook -c local -i localhost, test-splunk.yml
localhost | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong"}On ne voit rien du côté de l'affichage. Par contre, si vous faites un tour dans les logs de splunk :
cd /opt/splunk/var/log/introspection
tail http_event_collector_metrics.log |jq...
"num_of_requests_waiting_ack": 0 }}{ "datetime": "06-22-2022 16:10:09.987 +0200", "log_level": "INFO", "component": "HttpEventCollector", "data": { "token_name": "ansible", "series": "http_event_collector_token", "transport": "http", "format": "json", "total_bytes_received": 1381, "total_bytes_indexed": 1371, "num_of_requests": 1, "num_of_events": 1, "num_of_errors": 0, "num_of_parser_errors": 0, "num_of_requests_to_disabled_token": 0, "num_of_requests_in_mint_format": 0 }}Un petit tour dans l'interface de splunk, dans le menu Recherche. Entrez le
filtre source="http:Ansible" et cliquer sur la loupe.

Vous allez pouvoir suivre toutes les exécutions de playbooks et faire de beaux dashboard. À vous les KPI de vos exécutions.
Je mettrai à jour dans les prochains temps le billet sur comment faire la même chose depuis AWX
À lire ensuite
- Découverte d'Ansible Event Driven
Découvrez Ansible Event Driven et apprenez à automatiser vos tâches avec ansible-rulebook pour une gestion efficace des événements.
- Installer Ansible AWX avec une BDD externe
Installez Ansible AWX avec une base PostgreSQL externe sur Kubernetes : gagnez en robustesse, sécurité et flexibilité dans la gestion de vos projets.
- Ansible, Un problème des solutions
Découvrez des astuces et solutions pour optimiser vos playbooks Ansible et répondez à vos questions fréquentes sur cette puissante automation.
- Aqua un outil DevOps pour les installer tous
Aqua est un outil DevOps essentiel pour gérer et installer facilement vos outils, garantissant compatibilité et sécurité dans vos projets.