lespocky.telegraf_docker_in_docker

Telegraf Docker dans Docker (telegraf-docker-in-docker)

État de REUSE licence MIT pre-commit conforme au standard-readme

Rôle Ansible pour exécuter l'agent Telegraf avec le plugin d'entrée Docker dans un conteneur Docker.

Table des Matières

Contexte

Telegraf est un agent souvent utilisé pour envoyer des métriques dans InfluxDB. Les deux sont écrits en langage Go, qui est difficile à empaqueter pour des distributions traditionnelles comme Debian GNU/Linux, donc les exécuter dans Docker est pratique.

Le plugin d'entrée Docker de Telegraf collecte des métriques sur des conteneurs Docker en cours d'exécution via l'API du moteur Docker. Exécuter cet agent Telegraf dans un conteneur Docker nécessite d'accéder à l'endpoint Docker sur l'hôte, généralement un socket UNIX. D'un point de vue sécurité, il est logique de faire fonctionner l'agent en tant qu'utilisateur non privilégié, ce qui nécessite qu'un utilisateur sur le système hôte Docker soit dans le groupe docker, afin d'accéder à cet endpoint depuis l'intérieur du conteneur.

Ce projet configure cet utilisateur et le conteneur dans un rôle Ansible.

Exigences

Les conteneurs sont configurés avec le module community.docker.docker_container, qui fait partie de la collection community.docker. Vous pouvez déjà l'avoir installé. Sinon, consultez la documentation des modules pour savoir comment l'installer.

Installation

Ce rôle peut être installé via votre requirements.yml, soit depuis Ansible Galaxy soit via le dépôt Git.

Variables de Rôle

Variables Obligatoires

  • tdid_influxdb_org :
    • Description : Nom de l'organisation InfluxDB.
  • tdid_influx_token :
    • Description : Token API InfluxDB. Il est recommandé de ne pas mettre cela dans le playbook, mais d'utiliser un coffre-fort ou une recherche sécurisée !

Variables Optionnelles

  • tdid_conf_dir :
    • Par défaut : "/etc"
    • Description : Le répertoire de destination sur l'hôte, où le rôle copie le fichier de configuration.
  • tdid_docker_image :
    • Par défaut : "telegraf:latest"
    • Description : Combinaison de "telegraf" et d'un tag. Par défaut, utilise l'image la plus récente de Docker Hub.
    • Exemples :
      • "telegraf:latest"
      • "telegraf:alpine"
      • "telegraf:1.23"
      • "telegraf:1.24-alpine"
  • tdid_influxdb_url :
    • Par défaut : "http://localhost:8086"
    • Description : URL du nœud exécutant InfluxDB.
  • tdid_influxdb_bucket :
    • Par défaut : "default"
    • Description : Bucket de destination pour l'écriture.
  • tdid_timezone :
    • Par défaut : "UTC"
    • Description : Variable d'environnement TZ passée au conteneur telegraf.
    • Exemples :
      • Europe/Berlin
      • Asia/Nepal
  • tdid_user :
    • Par défaut : "telegraf"
    • Description : Utilisateur système créé ou modifié sur l'hôte.
    • Contexte : Mapper des utilisateurs hôtes arbitraires à des utilisateurs de conteneur n'est pas facilement réalisable. Les droits d'accès sur l'hôte s'appliquent aux mêmes UID et GID numériques à l'intérieur des conteneurs. Un processus à l'intérieur d'un conteneur accédant à quelque chose sur l'hôte doit s'exécuter avec l'uid/gid requis sur l'hôte pour accéder à certaines choses. Il est nécessaire d'avoir un utilisateur dans le groupe docker pour accéder à l'endpoint de l'API du moteur Docker sans autorisations super utilisateur. Si cet utilisateur n'est pas déjà présent sur l'hôte, il sera créé en tant qu'utilisateur système et ajouté au groupe 'docker'. L'agent Telegraf peut s'exécuter à l'intérieur du conteneur avec cet UID.

Dépendances

Aucun autre rôle de galaxy utilisé, juste le module communautaire mentionné ci-dessus.

Exemple de Playbook

Il suffit d'inclure le rôle et de définir quelques variables.

Exemple Minimal

- hosts: servers
  roles:
    - role: telegraf_docker_in_docker
      vars:
        tdid_influxdb_org: Home
        tdid_influx_token: "{{ lookup( … ) }}"

Exemple Complet

- hosts: servers
  roles:
    - role: telegraf_docker_in_docker
      vars:
        tdid_influxdb_org: Home
        tdid_influx_token: "{{ lookup( … ) }}"
        tdid_conf_dir: "/etc/telegraf"
        tdid_influxdb_bucket: devops
        tdid_influxdb_url: "http://influx.example.org:8086"
        tdid_docker_image: telegraf:1.24-alpine
        tdid_timezone: "Europe/Berlin"
        tdid_user: telegraf

Contributions

Les demandes de tirage sont acceptées.

Licence

Ce projet est sous licence MIT sauf indication contraire dans le fichier et respecte la conformité REUSE.

© 2022 Alexander Dahl et contributeurs

Informations sur l'Auteur

Écrit par Alexander Dahl pour le suivi des infrastructures de Netz39.

À propos du projet

Run Telegraf Agent with Docker input plugin in Docker container

Installer
ansible-galaxy install lespocky.telegraf_docker_in_docker
Licence
other
Téléchargements
13.8k
Propriétaire
Embedded Linux Developer