lespocky.telegraf_docker_in_docker
Telegraf Docker dans Docker (telegraf-docker-in-docker)
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
- Exigences
- Installation
- Variables de Rôle
- Dépendances
- Exemple de Playbook
- Contributions
- Licence
- Informations sur l'Auteur
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.
- Par défaut :
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"
- Par défaut :
tdid_influxdb_url
:- Par défaut :
"http://localhost:8086"
- Description : URL du nœud exécutant InfluxDB.
- Par défaut :
tdid_influxdb_bucket
:- Par défaut :
"default"
- Description : Bucket de destination pour l'écriture.
- Par défaut :
tdid_timezone
:- Par défaut :
"UTC"
- Description : Variable d'environnement
TZ
passée au conteneur telegraf. - Exemples :
Europe/Berlin
Asia/Nepal
- Par défaut :
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.
- Par défaut :
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.
Run Telegraf Agent with Docker input plugin in Docker container
ansible-galaxy install lespocky.telegraf_docker_in_docker