timorunge.pmm_client

pmm_client

Este rol instala y configura el cliente PMM de Percona.

Requisitos

Este rol requiere Ansible 2.5.0 o superior.

Puedes usar pip para instalar (y definir) una versión estable:

pip install ansible==2.8.4

Todos los requisitos de la plataforma están listados en el archivo de metadatos.

Instalación

ansible-galaxy install timorunge.pmm_client

Variables del rol

Las variables que se pueden pasar a este rol y una breve descripción de ellas son las siguientes. (Para todas las variables, consulta defaults/main.yml)

# Definir la versión
# Tipo: Int
pmm_client_version: 1.17.1
# Dirección IP y puerto del servidor pmm:
# Tipo: Str
pmm_client_server_host: 172.20.0.10
# Tipo: Int
pmm_client_server_port: 443
# Deshabilitar autenticación básica:
# Tipo: Bool
pmm_client_server_basic_auth: false
# Habilitar SSL:
# Tipo: Bool
pmm_client_server_use_ssl: true
# Forzar establecer el nombre del cliente en la configuración inicial
# Tipo: Bool
pmm_client_force_setup: false
# Definir servicios a añadir o eliminar:
# Tipo: List
pmm_client_add_services:
  - linux:metrics
  - mysql:metrics
  - mongodb:metrics
  - postgresql:metrics
pmm_client_remove_services:
  - mysql:queries
# Definir servicios a iniciar o detener:
# Tipo: List
pmm_client_start_services:
  - linux:metrics
  - mysql:metrics
  - mongodb:metrics
  - postgresql:metrics
pmm_client_stop_services:
  - mysql:queries
# Definir credenciales para la conexión a la base de datos MySQL:
# Tipo: Dict
pmm_client_db:
  mysql:
    host: localhost
    port: 3306
    username: root
    password: toor

Ejemplos

1) Instalar el Cliente PMM sin autenticación básica y con SSL deshabilitado

- 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) Instalar el Cliente PMM con autenticación básica y SSL habilitado

- 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) Instalar el Cliente PMM desde una URL definida

- 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) Forzando la configuración del Cliente PMM

En algunas situaciones, debes forzar la configuración del Cliente PMM. Por ejemplo, si el servidor no estaba disponible o has hecho una nueva configuración con un nombre de host que se usó antes.

Recibirás un mensaje como el siguiente:

TASK [timorunge.pmm-client : include_tasks] ********************************************************************************************************
included: ... ansible-pmm-client/tasks/server-config.yml for proxysql-aN8thi

TASK [timorunge.pmm-client : Check if PMM Client is configured] ************************************************************************************
fatal: [proxysql-aN8thi]: FAILED! => {"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.148803", "end": "2018-09-25 09:39:46.297917", "msg": "non-zero return code", "rc": 1, "start": "2018-09-25 09:39:46.149114", "stderr": "", "stderr_lines": [], "stdout": "El cliente PMM no está configurado, falta el archivo de configuración. Asegúrese de haber ejecutado 'pmm-admin config'.", "stdout_lines": ["El cliente PMM no está configurado, falta el archivo de configuración. Asegúrese de haber ejecutado 'pmm-admin config'."]}
...ignoring

TASK [timorunge.pmm-client : Configure PMM Client - Basic mode] ************************************************************************************
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": "non-zero return code", "rc": 1, "start": "2018-09-25 09:39:50.350572", "stderr": "", "stderr_lines": [], "stdout": "Otro cliente con el mismo nombre 'proxysql-aN8thi' detectado, su dirección es 172.20.0.11.\nTiene los servicios activos, así que este nombre no está disponible.\n\nEspecifica otro usando el flag --client-name.\n\nEn caso de que este sea el nodo cliente correcto que fue desinstalado con un servidor PMM no disponible,\npuedes añadir el flag --force para continuar. No uses este flag en otro caso.\nLos servicios remotos huérfanos serán eliminados automáticamente.", "stdout_lines": ["Otro cliente con el mismo nombre 'proxysql-aN8thi' detectado, su dirección es 172.20.0.11.", "Tiene los servicios activos, así que este nombre no está disponible.", "", "Especifica otro usando el flag --client-name.", "", "En caso de que este sea el nodo cliente correcto que fue desinstalado con un servidor PMM no disponible,", "puedes añadir el flag --force para continuar. No uses este flag en otro caso.", "Los servicios remotos huérfanos serán eliminados automáticamente."]}
  to retry, use: --limit @... main.retry

PLAY RECAP *****************************************************************************************************************************************
proxysql-aN8thi            : ok=9    changed=0    unreachable=0    failed=1

Básicamente tienes dos opciones:

1) A través de configuración yaml

- hosts: all
  become: yes
  vars:
    pmm_client_force_setup: true
  roles:
    - timorunge.pmm_client

2) A través de la línea de comandos

Este es el método recomendado.

$ ansible-playbook main.yml -i inventory -b --limit "proxysql-aN8thi" --diff -e "{ pmm_client_force_setup: true }"

...

TASK [timorunge.pmm-client : Check if PMM Client is configured] ************************************************************************************
fatal: [proxysql-aN8thi{"changed": false, "cmd": ["pmm-admin", "list"], "delta": "0:00:00.361021", "end": "2018-09-25 09:51:30.675725", "msg": "non-zero return code", "rc": 1, "start": "2018-09-25 09:51:30.314704", "stderr": "", "stderr_lines": [], "stdout": "El cliente PMM no está configurado, falta el archivo de configuración. Asegúrese de haber ejecutado 'pmm-admin config'.", "stdout_lines": ["El cliente PMM no está configurado, falta el archivo de configuración. Asegúrese de haber ejecutado 'pmm-admin config'."]}
...ignoring

TASK [timorunge.pmm-client : Configure PMM Client - Basic mode] ************************************************************************************
changed: [proxysql-aN8thi]

...

TASK [timorunge.pmm-client : Adding Linux and ProxySQL services to monitoring] *********************************************************************
changed: [proxysql-aN8thi] => (item=linux:metrics)
changed: [proxysql-aN8thi] => (item=proxysql:metrics)

...

proxysql-aN8thi            : ok=13   changed=2    unreachable=0    failed=0

5) Desinstalar el Cliente PMM

- hosts: all
  become: yes
  vars:
    pmm_client_enabled: false
  roles:
    - timorunge.pmm_client

Pruebas

Estado de Construcción

Las pruebas se hacen con Docker y docker_test_runner, que levanta los siguientes contenedores con diferentes configuraciones de entorno:

  • CentOS 7
  • Debian 9.4 (Stretch)
  • Ubuntu 16.04 (Xenial Xerus)
  • Ubuntu 18.04 (Bionic Beaver)

Ansible 2.8.4 está instalado en todos los contenedores y se aplica un playbook de prueba.

Para más detalles y chequeos adicionales, consulta la configuración de docker_test_runner y el Docker entrypoint.

# Testeando localmente:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml

Dado que el tiempo de construcción en Travis es limitado para repositorios públicos, las pruebas automatizadas están limitadas a:

  • CentOS 7
  • Debian 9.4 (Stretch)
  • Ubuntu 16.04 (Xenial Xerus)
  • Ubuntu 18.04 (Bionic Beaver)

Dependencias

Ninguna

Licencia

Licencia BSD 3-Clause "Nueva" o "Revisada"

Información del autor

  • Basado en el rol de Ansible de Chris Sam
  • Modificado en gran medida por: Timo Runge
Acerca del proyecto

Percona PMM Client for Debian and RedHat based distributions

Instalar
ansible-galaxy install timorunge.pmm_client
Licencia
bsd-3-clause
Descargas
7.2k
Propietario