Loading search data...

Ansible - Envoyer les résultats de vos playbooks sur Splunk

Publié le : 22 juin 2022 | Mis à jour le : 27 juin 2023

logo ansible

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.

ansible splunk download

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 splunk
sudo useradd -d /opt/splunk -m -g splunk splunk
sudo su - splunk

On peut maintenant décompresser l’archive

tar xvfz /tmp/splunk-9.0.0-6818ac46f2ec-Linux-x86_64.tgz -C /opt

Démarrons Splunk :

/opt/splunk/bin/splunk start --accept-license

Splunk 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 name
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      3558/splunkd
tcp        0      0 0.0.0.0:8191            0.0.0.0:*               LISTEN      3727/mongod
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3558/splunkd
tcp        0      0 127.0.0.1:8065          0.0.0.0:*               LISTEN      3983/python3.7

Configuration 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

ansible splunk login

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

ansible splunk collect

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.

ansible splunk collect

Si vous cliquez dessus vous devriez voir ceci.

ansible splunk collect

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 name
tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN      3558/splunkd
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN      3558/splunkd
tcp        0      0 0.0.0.0:8191            0.0.0.0:*               LISTEN      3727/mongod
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      3558/splunkd
tcp        0      0 127.0.0.1:8065          0.0.0.0:*               LISTEN      3983/python3.7

Il 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.general

Maintenant ajoutons le à notre configuration Ansible. Éditer votre fichier ansible.cfg et Ajoutez ces lignes :

[defaults]

callback_whitelist = community.general.splunk
callbacks_enabled = community.general.splunk

Dans votre fenêtre terminal il faut définir le token et l’url de splunk :

export SPLUNK_AUTHTOKEN=4e33f2f9-faa8-4cd8-befe-d21f693e63b6
export 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.

ansible splunk collect

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

Mots clés :

devops ansible tutorials infra as code formation ansible

Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur  Ko-Fi. Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne vous coûte plus cher, via  ce lien . Vous pouvez aussi partager le lien sur twitter ou Linkedin via les boutons ci-dessous. Je vous remercie pour votre soutien.

Autres Articles


Commentaires: