timorunge.pmm_client
pmm_client
Ce rôle installe et configure le client Percona PMM.
Exigences
Ce rôle nécessite Ansible 2.5.0 ou une version supérieure.
Vous pouvez simplement utiliser pip pour installer (et définir) une version stable :
pip install ansible==2.8.4
Tous les besoins de la plateforme sont listés dans le fichier de métadonnées.
Installation
ansible-galaxy install timorunge.pmm_client
Variables de rôle
Les variables qui peuvent être transmises à ce rôle et une brève description à leur sujet sont les suivantes. (Pour toutes les variables, consultez defaults/main.yml)
# Définir la version
# Type : Int
pmm_client_version: 1.17.1
# Adresse IP et port du pmm-server :
# Type : Str
pmm_client_server_host: 172.20.0.10
# Type : Int
pmm_client_server_port: 443
# Désactiver l'authentification basique :
# Type : Bool
pmm_client_server_basic_auth: false
# Activer SSL :
# Type : Bool
pmm_client_server_use_ssl: true
# Forcer la définition du nom du client lors de l'installation initiale
# Type : Bool
pmm_client_force_setup: false
# Définir les services à ajouter ou à supprimer :
# Type : Liste
pmm_client_add_services:
- linux:metrics
- mysql:metrics
- mongodb:metrics
- postgresql:metrics
pmm_client_remove_services:
- mysql:queries
# Définir les services à démarrer ou à arrêter :
# Type : Liste
pmm_client_start_services:
- linux:metrics
- mysql:metrics
- mongodb:metrics
- postgresql:metrics
pmm_client_stop_services:
- mysql:queries
# Définir les identifiants pour la connexion à la base de données MySQL :
# Type : Dict
pmm_client_db:
mysql:
host: localhost
port: 3306
username: root
password: toor
Exemples
1) Installer le client PMM sans authentification basique et SSL désactivé
- hosts: all
become: yes
vars:
pmm_client_server_host: 172.20.0.10
pmm_client_server_port: 443
pmm_client_server_basic_auth: false
pmm_client_server_use_ssl: false
pmm_client_add_services:
- linux:metrics
pmm_client_start_services:
- linux:metrics
roles:
- timorunge.pmm_client
2) Installer le client PMM avec authentification basique et SSL activé
- hosts: all
become: yes
vars:
pmm_client_server_host: 172.20.0.10
pmm_client_server_port: 443
pmm_client_server_basic_auth: true
pmm_client_server_basic_auth_username: admin
pmm_client_server_basic_auth_password: mySecurePassword
pmm_client_server_use_ssl: true
pmm_client_add_services:
- linux:metrics
pmm_client_start_services:
- linux:metrics
roles:
- timorunge.pmm_client
3) Installer le client PMM à partir d'une URL définie
- hosts: all
become: yes
vars:
pmm_client_version: 1.17.1
pmm_client_version_revision: 1
pmm_client_use_official_repo: false
pmm_client_debian_pkg: "https://www.percona.com/downloads/pmm/{{ pmm_client_version }}/binary/debian/{{ ansible_distribution_release }}/x86_64/pmm-client_{{ pmm_client_version }}-{{ pmm_client_version_revision }}.{{ ansible_distribution_release }}_amd64.deb"
roles:
- timorunge.pmm_client
4) Forcer la configuration du client PMM
Dans certaines situations, vous devez forcer la configuration du client PMM. Par exemple, si le serveur était inaccessible ou si vous avez fait une nouvelle installation avec un nom d'hôte qui a déjà été utilisé.
Vous recevrez un message comme le suivant :
TASK [timorunge.pmm-client : include_tasks] ********************************************************************************************************
included: ... ansible-pmm-client/tasks/server-config.yml for proxysql-aN8thi
TASK [timorunge.pmm-client : Vérifier si le client PMM est configuré] ************************************************************************************
fatal: [proxysql-aN8thi]: FAILED! => {"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.148803", "end": "2018-09-25 09:39:46.297917", "msg": "code de retour non zéro", "rc": 1, "start": "2018-09-25 09:39:46.149114", "stderr": "", "stderr_lines": [], "stdout": "Le client PMM n'est pas configuré, fichier de configuration manquant. Veuillez vous assurer que vous avez exécuté 'pmm-admin config'.", "stdout_lines": ["Le client PMM n'est pas configuré, fichier de configuration manquant. Veuillez vous assurer que vous avez exécuté 'pmm-admin config'."]}
...ignoring
TASK [timorunge.pmm-client : Configurer le client PMM - mode de base] ************************************************************************************
fatal: [proxysql-aN8thi]: FAILED! => {"changed": true, "cmd": ["pmm-admin", "config", "--server", "172.20.0.10:80", "--client-name", "proxysql-aN8thi", "--config-file", "/usr/local/percona/pmm-client/pmm.yml"], "delta": "0:00:00.239708", "end": "2018-09-25 09:39:50.590280", "msg": "code de retour non zéro", "rc": 1, "start": "2018-09-25 09:39:50.350572", "stderr": "", "stderr_lines": [], "stdout": "Un autre client avec le même nom 'proxysql-aN8thi' a été détecté, son adresse est 172.20.0.11.\nIl a des services actifs donc ce nom n'est pas disponible.\n\nVeuillez en spécifier un autre en utilisant le paramètre --client-name.\n\nDans le cas où c'est le bon nœud client qui a été précédemment désinstallé avec un serveur PMM inaccessible,\nvous pouvez ajouter le paramètre --force pour continuer. N'utilisez pas ce paramètre autrement.\nLes services distants orphelins seront supprimés automatiquement.", "stdout_lines": ["Un autre client avec le même nom 'proxysql-aN8thi' a été détecté, son adresse est 172.20.0.11.", "Il a des services actifs donc ce nom n'est pas disponible.", "", "Veuillez en spécifier un autre en utilisant le paramètre --client-name.", "", "Dans le cas où c'est le bon nœud client qui a été précédemment désinstallé avec un serveur PMM inaccessible,", "vous pouvez ajouter le paramètre --force pour continuer. N'utilisez pas ce paramètre autrement.", "Les services distants orphelins seront supprimés automatiquement."]}
to retry, use: --limit @... main.retry
PLAY RECAP *****************************************************************************************************************************************
proxysql-aN8thi : ok=9 changed=0 unreachable=0 failed=1
En gros, vous avez deux options :
1) Via configuration yaml
- hosts: all
become: yes
vars:
pmm_client_force_setup: true
roles:
- timorunge.pmm_client
2) Via ligne de commande
C'est la méthode recommandée.
$ ansible-playbook main.yml -i inventory -b --limit "proxysql-aN8thi" --diff -e "{ pmm_client_force_setup: true }"
...
TASK [timorunge.pmm-client : Vérifier si le client PMM est configuré] ************************************************************************************
fatal: [proxysql-aN8thi{"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.361021", "end": "2018-09-25 09:51:30.675725", "msg": "code de retour non zéro", "rc": 1, "start": "2018-09-25 09:51:30.314704", "stderr": "", "stderr_lines": [], "stdout": "Le client PMM n'est pas configuré, fichier de configuration manquant. Veuillez vous assurer que vous avez exécuté 'pmm-admin config'.", "stdout_lines": ["Le client PMM n'est pas configuré, fichier de configuration manquant. Veuillez vous assurer que vous avez exécuté 'pmm-admin config'."]}
...ignoring
TASK [timorunge.pmm-client : Configurer le client PMM - mode de base] ************************************************************************************
changed: [proxysql-aN8thi]
...
TASK [timorunge.pmm-client : Ajout des services Linux et ProxySQL à la surveillance] *********************************************************************
changed: [proxysql-aN8thi] => (item=linux:metrics)
changed: [proxysql-aN8thi] => (item=proxysql:metrics)
...
proxysql-aN8thi : ok=13 changed=2 unreachable=0 failed=0
5) Désinstaller le client PMM
- hosts: all
become: yes
vars:
pmm_client_enabled: false
roles:
- timorunge.pmm_client
Tests
Les tests sont effectués avec Docker et docker_test_runner qui met en place les conteneurs suivants avec différents paramètres d'environnement :
- CentOS 7
- Debian 9.4 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
Ansible 2.8.4 est installé sur tous les conteneurs et un playbook de test est appliqué.
Pour plus de détails et des vérifications supplémentaires, consultez la configuration docker_test_runner et le point d'entrée Docker.
# Tester localement :
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml
Comme le temps de construction sur Travis est limité pour les dépôts publics, les tests automatisés sont limités à :
- CentOS 7
- Debian 9.4 (Stretch)
- Ubuntu 16.04 (Xenial Xerus)
- Ubuntu 18.04 (Bionic Beaver)
Dépendances
Aucune
Licence
Licence BSD 3-Clause "New" ou "Revised"
Informations sur l'auteur
- Basé sur le rôle Ansible de Chris Sam
- Fortement modifié par : Timo Runge
Percona PMM Client for Debian and RedHat based distributions
ansible-galaxy install timorunge.pmm_client