rockandska.influxdb
ansible-role-influxdb
Rôle Ansible pour installer/configurer InfluxDB à partir des binaires d'InfluxDB.
Disponible sur Ansible Galaxy
Ansible Galaxy :
Exigences sur les hôtes distants
Toutes distributions
- logrotate
- python requests >= 1.0.0 (si vous utilisez la gestion des utilisateurs, bases de données, politiques de rétention fournie par ce rôle)
- python influxdb >= 0.9.0 (si vous utilisez la gestion des utilisateurs, bases de données, politiques de rétention fournie par ce rôle)
Debian / Ubuntu
- apt-transport-https
- gpg-agent
- ca-certificates
CentOS / RedHat
- gnupg2
Variables du Rôle
Les variables par défaut sont dans defaults/main.yml
---
###########
# Installer #
###########
influxdb_version: 1.7.4
influxdb_rpm_url: "https://dl.influxdata.com/influxdb/releases/influxdb-{{ influxdb_version }}.x86_64.rpm"
influxdb_rpm_sha256: "93caa49159e76b3338abc191c85d46d134ac67697a0c7f874c937baa38dd6a5e"
influxdb_rpm_dest_path: "/usr/src"
influxdb_deb_url: "https://dl.influxdata.com/influxdb/releases/influxdb_{{ influxdb_version }}_amd64.deb"
influxdb_deb_sha256: "5488bd8889de7d45aa09cdccc845156e2d59442871ad6899d64d797e42f2888b"
influxdb_deb_dest_path: "/usr/src"
#################
# Configuration Personnalisée #
#################
influxdb_vars_files: []
influxdb_config_tpl: etc/influxdb/influxdb.conf.j2
influxdb_config: {}
influxdb_systemd_override_tpl: etc/systemd/system/influxdb.service.d/override.conf.j2
influxdb_systemd_override: {}
influxdb_custom_logrotate_tpl: etc/logrotate.d/influxdb.j2
influxdb_custom_logrotate:
############
# Utilisateur API #
############
influxdb_management_hostname:
influxdb_management_port:
influxdb_management_validate_certs:
influxdb_management_proxies:
influxdb_management_login_username:
influxdb_management_login_password:
influxdb_management_retries:
influxdb_management_ssl:
influxdb_management_timeout:
influxdb_management_udp_port:
influxdb_management_use_udp:
#########
# Utilisateurs #
#########
influxdb_users_to_create: []
influxdb_users_to_delete: []
#############
# Bases de Données #
#############
influxdb_databases_to_create: []
influxdb_databases_to_delete: []
############
# Politiques #
############
influxdb_retention_policies_to_create: []
#########
# Débogage #
#########
influxdb_hide_log: true
Détails
influxdb_version
- doit être une version d'influxdb disponible sur https://dl.influxdata.com/influxdb/releases
- les anciennes versions ne sont pas affichées sur la page de téléchargement mais sont disponibles par des liens directs
influxdb_rpm_url
- URL du paquet rpm
influxdb_rpm_sha256
- sha256 du paquet rpm pour vérifier son intégrité
- Disponible sur la page de téléchargement d'InfluxDB pour la dernière version
influxdb_rpm_dest_path
- chemin où télécharger le paquet rpm
influxdb_deb_url
- URL du paquet deb
influxdb_deb_sha256
- sha256 du paquet deb pour vérifier son intégrité
- Disponible sur la page de téléchargement d'InfluxDB pour la dernière version
influxdb_deb_dest_path
- chemin où télécharger le paquet deb
influxdb_vars_files
- liste des fichiers de variables utilisés pour remplacer les variables par défaut si nécessaire
- si vous utilisez un chemin relatif, mettez ces fichiers à côté de votre playbook dans le répertoire
vars
- exemple :
influxdb_vars_files: - settings.yml
influxdb_config_tpl
- chemin vers le modèle de configuration d'influxdb
- si vous souhaitez utiliser votre propre modèle
- ajoutez votre modèle à côté de votre playbook dans un répertoire
templates
- utilisez un chemin différent de celui par défaut
- ajoutez votre modèle à côté de votre playbook dans un répertoire
influxdb_config
un dictionnaire représentant la configuration personnalisée d'influxdb à appliquer
mettez des clés spéciales entre guillemets (exemple : "[meta]")
Si vous utilisez une configuration personnalisée, certaines sections minimales doivent être appliquées en raison de influxdb/#12140 et sont montrées dans l'exemple ci-dessous
exemples :
influxdb_config: # Section de configuration globale en 'clé : valeur' reporting-disabled: true # Sections minimales requises en 'section : { clé : valeur, clé : valeur }' "[meta]": dir: /var/lib/influxdb/meta "[data]": dir: /var/lib/influxdb/data wal-dir: /var/lib/influxdb/wal # Autres sections au format 'section : { clé : valeur, clé : valeur }' "[http]": auth-enabled: true "[[graphite]]": enable: true batch-size: 5000
influxdb_systemd_override_tpl
- chemin vers le modèle d'override systemd d'influxdb
- si vous souhaitez utiliser votre propre modèle
- ajoutez votre modèle à côté de votre playbook dans un répertoire
templates
- utilisez un chemin différent de celui par défaut
- ajoutez votre modèle à côté de votre playbook dans un répertoire
influxdb_systemd_override
- un dictionnaire représentant la configuration d'override systemd
- le premier niveau est utilisé pour la section ini
- le second niveau est utilisé pour les paires clé / valeur
- exemple :
influxdb_systemd_override: Service: LimitNOFILE: 30000 # Cela donnera dans le fichier d'override systemd : # [Service] # LimitNOFILE=30000
influxdb_custom_logrotate_tpl
- chemin vers le modèle de logrotate personnalisé d'influxdb
- si vous souhaitez utiliser votre propre modèle
- ajoutez votre modèle à côté de votre playbook dans un répertoire
templates
- utilisez un chemin différent de celui par défaut
- ajoutez votre modèle à côté de votre playbook dans un répertoire
influxdb_custom_logrotate
une chaîne multilignes avec les options de logrotate pour les journaux d'influxdb
remplacera la configuration par défaut
/!\ Attention, si vous remplacez la configuration par défaut de logrotate par une personnalisation, la configuration appliquée persistera même si vous désélectionnez cette variable
exemple :
influxdb_custom_logrotate: | weekly missingok rotate 40 compress notifempty # Cela donnera dans le fichier de configuration de logrotate : # /var/log/influxdb/*.log { # weekly # missingok # rotate 40 # compress # notifempty # }
influxdb_management_hostname
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- nom d'hôte pour les appels API
influxdb_management_port
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- port http pour les appels API
influxdb_management_validate_certs
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- devons-nous valider le certificat SSL pour les appels API
influxdb_management_proxies
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- Proxy HTTP(S) à utiliser pour les appels API
influxdb_management_login_username
- nom d'utilisateur à utiliser pour les appels API
- obligatoire si
influxdb_config['[http]']['auth-enabled']
est défini - Cet utilisateur ne sera créé qu'une seule fois et doit être un utilisateur qui n'existe pas déjà
- Si vous souhaitez modifier l'utilisateur après sa création, utilisez un utilisateur
admin
déjà existant.
influxdb_management_login_password
- mot de passe à utiliser pour les appels API
- obligatoire si
influxdb_config['[http]']['auth-enabled']
est défini - Si vous souhaitez modifier le mot de passe après la création de l'utilisateur
admin
:- Modifiez le mot de passe via la CLI avant de le modifier ici
- Alternativement, vous pourriez le changer dans
influxdb_users_to_create
, mais sachez que cela générera une erreur si vous avez des utilisateurs restants qui doivent être vérifiés, mais cela devrait fonctionner si vous relancez votre playbook une deuxième fois.
influxdb_management_retries
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- nombre de tentatives pour les appels API
influxdb_management_ssl
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- utiliser SSL pour les appels API
influxdb_management_timeout
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- délai d'attente pour les appels API
influxdb_management_udp_port
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- port UDP à utiliser pour les appels API
influxdb_management_use_udp
- par défaut à partir de la valeur du module influxdb_{user,policy,retention_policy}
- devons-nous utiliser l'UDP pour les appels API
influxdb_users_to_create
liste de dictionnaires pour la création d'utilisateurs
référez-vous à la documentation ansible pour les options obligatoires et la compatibilité des versions
les privilèges de concession sont fournis par une bibliothèque personnalisée fournie avec ce rôle et mis à jour depuis ce PR
l'absence de la clé
grants
supprimera tous lesGRANTS
pour l'utilisateur spécifiéExemple :
influxdb_users_to_create: - user_name: test user_password: test grants: - database: db_test privilege: READ - user_name: test2 user_password: test2 admin: true
influxdb_users_to_delete
- liste des utilisateurs à supprimer
- Exemple :
influxdb_users_to_delete: - test
influxdb_retention_policies_to_create
liste des politiques de rétention à créer
référez-vous à la documentation ansible pour les options obligatoires et la compatibilité des versions
exemple :
influxdb_retention_policies_to_create: - database_name: db_test policy_name: test duration: 1h replication: 1
influxdb_databases_to_create
- liste des bases de données à créer
- exemples :
influxdb_databases_to_create: - db_test
influxdb_databases_to_delete
liste des bases de données à supprimer
exemples :
influxdb_databases_to_delete: - db_test
influxdb_retention_policies_to_create
liste des paramètres des politiques de rétention
la suppression de politiques n'est pas encore supportée
exemples :
influxdb_retention_policies_to_create: - database_name: db_test policy_name: test duration: 1h replication: 1
influxdb_hide_log
- par défaut : true
- ne montre pas le journal des appels API pour éviter les fuites d'informations sensibles
- mettez-le sur false pour le débogage
Exemple de Playbook
- hosts: influxdb
roles:
- rockandska.influxdb
Tests Locaux
La meilleure façon de tester localement le rôle est d'utiliser Docker et molecule (v2.x). Vous devez installer Docker sur votre système. Voir "Commencer" pour un paquet Docker adapté à votre système. Nous utilisons tox pour simplifier le processus de test sur plusieurs versions d'ansible. Pour installer tox, exécutez :
$ sudo pip install tox
# ou
$ pip install --user tox
Pour exécuter des tests sur toutes les versions d'ansible (AVERTISSEMENT : cela peut prendre un certain temps)
$ tox
Pour exécuter une commande molecule personnalisée sur un environnement personnalisé avec uniquement le scénario de test par défaut :
$ tox -e py27-ansible25 -- molecule test -s default
Pour plus d'informations sur molecule, consultez leur documentation.
Si vous souhaitez exécuter des tests sur un hôte docker distant, spécifiez simplement la variable DOCKER_HOST
avant d'exécuter les tests tox.
Licence
BSD
ansible-galaxy install rockandska.influxdb