Ansible: accéder à un élément dans un dictionnaire

Tags: #<Tag:0x00007f3b82856870> #<Tag:0x00007f3b828566e0>

Bonjour,

je cherche à surveiller l’état de santé d’un cluster mariadb galera avec un playbook ansible. Pour l’exemple, je m’intéresse à la variable wsrep_local_state_comment, mais c’est anecdotique.
J’utilise le plugin communautaire mysql_query afin d’exécuter les requêtes me permettant de récupérer la valeur de cette variable.

Voici la tâche dans le playbook:

          - name: "Vérification des états locaux Galera (wsrep_local_state_comment)"
            community.mysql.mysql_query:
                    login_db: information_schema
                    login_user: root
                    login_unix_socket: /var/run/mysqld/mysqld.sock
                    query: select VARIABLE_VALUE from GLOBAL_STATUS where VARIABLE_NAME = 'wsrep_local_state_comment'
            register: wsrep_local_state_comment

Et voici le contenu de la variable wsrep_local_state_comment:

            debug:
                    msg: "local state comment: {{ wsrep_local_state_comment }}"
---
---
ok: [cc-galera1-dev] => {
    "msg": "local state comment: {u'rowcount': [1], u'executed_queries': [u\"select VARIABLE_VALUE from GLOBAL_STATUS where VARIABLE_NAME = 'wsrep_local_state_comment'\"], u'changed': False, u'query_result': [[{u'VARIABLE_VALUE': u'Synced'}]], 'failed': False}"
}

Je souhaite accéder uniquement à la valeur de la colonne, c’est-à-dire à ‹ Synced ›, mais je n’y parviens pas (je ne connais pas bien python).

La documentation du module nous dit que query_result retourne une liste de listes de dictionnaires de colonnes:valeurs (List of lists (sublist for each query) containing dictionaries in column:value form representing returned rows.), mais le mieux que j’ai pu faire de cette information, c’est ceci:

            debug:
                    msg: "local state comment: {{ wsrep_local_state_comment.query_result[0] }}"
---
---
ok: [cc-galera1-dev] => {
    "msg": "local state comment: [{u'VARIABLE_VALUE': u'Synced'}]"
}

tandis qu’idéalement, j’aimerais obtenir quelque chose comme ceci:

ok: [cc-galera1-dev] => {
    "msg": "local state comment: 'Synced'"
}

J’espère que ce n’est pas trop « fouillis » comme description, je pense que mon problème est surtout que je ne sais pas bien accéder à des éléments imbriqués dans les objets python.

"Tout simplement ":

wsrep_local_state_comment.query_result[0][0]['VARIABLE_VALUE']
1 J'aime