Est-il possible de combiner des résultats à distance avec le registre local dans Ansible?

J'essaie de collecter des informations sur le cluster mysql, Puis utiliser dans une logique locale.

Mon problème est que si je lance mon équipe sur des hôtes distants, je n'aurai pas accès à ces résultats.

- name: get uuids for existing cluster nodes
shell: mysql -N -B -u {{ db_user }} -p {{ db_user_password }} -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';" | sed 's/\t/,/g' | cut -f2 -d','
register: maria_cluster_uuids

Cela me donne les données dont j'ai besoin, mais ce dont j'ai vraiment besoin est la liste combinée. / Déterminer les résultats.

Je pourrais essayer:

- name: get uuids for existing cluster nodes
run_once: true
shell: mysql -N -B -u {{ db_user }} -h {{ item }} -p {{ db_user_password }} -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';" | sed 's/\t/,/g' | cut -f2 -d','
register: maria_cluster_uuids
with_items: play_hosts
delegate_to: 127.0.0.1

mais mysql émet un avertissement et, franchement, je ne veux pas imposer l'obligation que le client soit installé sur la machine locale mysql.

Mauvaise prémonition que je dois écrire du python ici ...
Invité:

Blanche

Confirmation de:

Utilisation
http://docs.ansible.com/ansibl ... .html
Module I.

hostvars

:

---
- hosts: all
vars:
uuids: |
{%- set o=[] %}
{%- for i in play_hosts %}
{%- if o.append(hostvars[i].uuid) %}
{%- endif %}
{%- endfor %}
{{ o }}
tasks:
- name: get uuids for existing cluster nodes
shell: mysql -N -B -u {{ db_user }} -p {{ db_user_password }} -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';" | sed 's/\t/,/g' | cut -f2 -d','
register: maria_cluster_uuids
- set_fact:
uuid: "{{ maria_cluster_uuids.stdout }}"
- debug:
var: uuids
run_once: true
delegate_to: 127.0.0.1

Giselle

Confirmation de:

Aiderait à écrire la production de l'équipe mysql Sur l'hôte local ou accessible et continuez à ajouter des résultats de tous les serveurs. Après cela, vous pouvez analyser ce fichier dans votre livre de lecture ou même écrire un script d'analyse d'analyse et l'exécuter à partir du livre de lecture.

La sortie ressemblera à ceci -

---
- hosts: production
tasks:
- name: get uuids for existing cluster nodes
shell: mysql -N -B -u {{ db_user }} -p {{ db_user_password }} -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_state_uuid';" | sed 's/\t/,/g' | cut -f2 -d','
register: maria_cluster_uuids
- name: Write to local disk
lineinfile: dest=/tmp/mysqlcluster create=yes line="{{ maria_cluster_uuids.stdout_lines }}"
delegate_to: 127.0.0.1
Ensuite, vous pouvez analyser le fichier / tmp / mysqlcluster.

Pour répondre aux questions, connectez-vous ou registre